Skip Navigation LinksHome / Articles / View Article

Using the Button control in Silverlight 2

+ Add to SilverlightShow Favorites
4 comments   /   posted by Nikolay Raychev on May 12, 2008
(0 votes)
Categories: Controls , Tutorials , QuickStarts

Introduction

The Button is a Silverlight control which responds when the user clicks on it.

See also:
Button Controls Article
HyperlinkButton Article
ToggleButton Article
RepeatButton Article

Overview

Since the Button derives directly from the ButtonBase class and there isn’t an additional functionality, I’ll use the examples from the Button Controls Article.

The most important event of the Button, inherited from ButtonBase class is the Click event. It occurs when a user clicks on the button. For example:

XAML:

<UserControl x:Class="Button2.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="200" Height="100">
    <Canvas x:Name="cnvLayoutRoot" Background="White">
        <TextBlock x:Name="tblText" Canvas.Top="20" Canvas.Left="30" Text="Not clicked yet."></TextBlock>
        <Button x:Name="btnTest" Canvas.Top="60" Canvas.Left="30" Click="btnTest_Click" Content="Click me!"></Button>
    </Canvas>
</UserControl>

Code behind:

private void btnTest_Click( object sender, RoutedEventArgs e )
{
    this.tblText.Text = "The button was clicked.";
}

We have a TextBlock and a Button. We specify the event handler for the Click event of the Button in the XAML and then write code in the code behind to respond to this event. In our example we change the Text of the TextBlock when the user clicks on the Button. It results in the following:

An interesting property is the ClickMode, also inherited from the ButtonBase class. When you set it to Release(default), the Click event occurs when you release the mouse button:

<Button ClickMode="Release" x:Name="btnTest" Canvas.Top="60" Canvas.Left="30" Click="btnTest_Click" Content="Click me!"></Button>

Setting this property to Press causes the event to occur immediately when you click the mouse button, for example:

<Button ClickMode="Press" x:Name="btnTest" Canvas.Top="60" Canvas.Left="30" Click="btnTest_Click" Content="Click me!"></Button>

Setting this property to Hover causes the event to occur when you move over the Button with the mouse:

<Button ClickMode="Hover" x:Name="btnTest" Canvas.Top="60" Canvas.Left="30" Click="btnTest_Click" Content="Click me!"></Button>

Example

Imagine that we want to have the following Button which starts a Silverlight animation:

Since the Button is a ContentControl we can use any object for its Content property. So you can put a layout control in it, containing other controls:

<UserControl x:Class="Button2.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="200" Height="100">
    <Canvas x:Name="cnvLayoutRoot" Background="LightGray">
        <Button x:Name="btnTest" Background="White" Canvas.Top="30" Canvas.Left="30">
            <StackPanel x:Name="spnlButtonContent" VerticalAlignment="Center" Orientation="Horizontal">
                <Image x:Name="imgSls" Source="/Images/sls.jpg" Width="30" Height="30" />
                <TextBlock x:Name="tblPlay" Text=" PLAY " FontWeight="Bold" Foreground="#1ca0f2" VerticalAlignment="Center"/>
            </StackPanel>
        </Button>
    </Canvas>
</UserControl>

In our example we just put a StackPanel in our Button, containing an Image and a TextBlock. So you can arrange the Button’s Content depending on your desires and imagination.

Conclusion

This article is just a brief description of the key features of the Button control. It targets the developer who has just started with the new Silverlight 2 controls. Any comments are welcome.

Reference
http://msdn.microsoft.com/en-us/library/system.windows.controls.button(VS.95).aspx

Share


Comments

Comments RSS RSS
  • RE: Using the Button control in Silverlight 2  

    posted by Dave on Jan 12, 2009 08:28

    Hi Niko,

    I am a newbie to SL and I had read one of your article and have just finished reading a second one.
    Great JOB !

    Dave

  • RE: Using the Button control in Silverlight 2  

    posted by A J A Y on Jan 31, 2009 03:41

    Always good to find Silverlight Documentation that is UNDERSTANDABLE :-)

  • RE: Using the Button control in Silverlight 2  

    posted by jundu88@hotmail.com on Mar 02, 2010 00:13

    I want my button to be able to handle both "Hover" and "Click" events. How do I do it?

    Thanks,

  • RE: Using the Button control in Silverlight 2  

    posted by nikolayraychev on Mar 02, 2010 15:46

    Hi,

    You can attach to the MouseEnter and MouseLeave events in order to handle the hover. Additionally you can make a custom control template and use the MouseOver visual state.

Add Comment

 
 

   
  
  
   
Please add 2 and 4 and type the answer here:

Join the free SilverlightShow webcast 'Running Silverlight Outside the Browser and with Elevated Trust'. Sept 7th, 8 am - 9 am PDT.
In this live session Chris Anderson will cover configuring and debugging OOB mode, toast notifications, elevated trust, direct file access and much more.
Learn more | Register | See more webinars (hide this)