Introduction
This article demonstrates how to create and use a Button control in WPF using XAML and C#. This article starts with introduction of the Button tag in XAML. After that, it demonstrates how to position and add click event handler of a button. In the end, the article discusses how to create a button at run-time.
Creating a Button
The Button XAML element represents a WPF Button control.
<Button/>
The Width and Height attributes of the Button element represent the width and the height of a Button. The Content property of the Button element sets the text of a button. The x:Name attribute represents the name of the control, which is a unique identifier of a control. You may also use the Name property to set the name of a control.
The code snippet in Listing 1 creates a Button control and sets the name, height, width, and content of a Button control.
- <Button x:Name="DrawCircleButton" Height="40" Width="120" Content="Draw Circle" >
- </Button>
Listing 1
The default property of a button is Content. The following code snippet creates the same button as created by Listing 1.
- <Button x:Name="DrawCircleButton" Height="40" Width="120" >
- Draw Circle
- </Button>
The output looks like Figure 1.
Figure 1
Positioning a Button
If you place a button on a Grid control, the button will be placed in the center of Grid. If you are using a Canvas as your parent control of Button, the Button will be placed in the left top corner of Canvas.
You can use Margin property to position a button control. If you are using a Canvas, you may also use Canvas.Left and Canvas.Top properties.
You may also use VerticalAlignment and HorizontalAlignment attributes to set vertical alignment, and horizontal alignment of a button.
The code snippet in Listing 2 sets the position of the Button control in the left top corner of the page.
- <Button x:Name="DrawCircleButton" Height="40" Width="120"
- Canvas.Left="10" Canvas.Top="10"
- Content="Draw Circle"
- VerticalAlignment="Top"
- HorizontalAlignment="Left">
- </Button>
Listing 2
Adding a Button Click Event Handler
The Click attribute of the Button element adds the click event handler. The following code adds the click event handler for a Button.
- <Button x:Name="DrawCircleButton" Height="40" Width="120"
- Canvas.Left="10" Canvas.Top="10"
- Content="Draw Circle"
- VerticalAlignment="Top"
- HorizontalAlignment="Left">
- Click="DrawCircleButton_Click"
- </Button>
The code for the click event handler looks like following.
- private void DrawCircleButton_Click(object sender, RoutedEventArgs e)
- {
-
- }
Now, whatever code you write in the click event handler that will be executed on the Button click. The code listed in Listing 3 creates a circle on the Button click event handler.
- private void DrawCircleButton_Click(object sender, RoutedEventArgs e)
- {
-
- Ellipse circle = new Ellipse();
- circle.Width = 200;
- circle.Height = 200;
- circle.Fill = new SolidColorBrush(Colors.Yellow);
- circle.Stroke = new SolidColorBrush(Colors.Black);
- circle.StrokeThickness = 4;
-
- LayoutRoot.Children.Add(circle);
- }
Listing 3
Creating a Button Dynamically
The code listed in Listing 5 creates a Button control programmatically. First, it creates a Button object and sets its width, height, contents, background and foreground and later the Button is added to the LayoutRoot.
- private void CreateAButton()
- {
- Button btn = new Button();
- btn.Height = 80;
- btn.Width = 150;
- btn.Content = "Click ME";
- btn.Background = new SolidColorBrush(Colors.Orange);
- btn.Foreground = new SolidColorBrush(Colors.Black);
- LayoutRoot.Children.Add(btn);
- }
Listing 5
Summary
In this article, I discussed how we can create a Button control in WPF and C#. We also saw how we can format a Button by setting its border, background, and foreground properties. After that, we saw you to set an image as the background of a Button. In the end of this article, we saw how to create a Button dynamically.