WPF Layout: Border

Proper layout and positioning are a vital part of interactive, high-performance and user-friendly Windows applications. This series of articles explains the layout process in WPF. The series starts with an understanding of the WPF layout process. The next part of this series will cover the basics of layout and positioning such as size, margin, padding and alignment of elements. Later in this series, I will cover various panels and related parent controls available in WPF.

Introduction

In the previous article, WPF Layout: WrapPanel, I discussed the WrapPanel. This article focuses on the how to work with the border of WPF elements.

Border

Elements in WPF do not have a border property. To place a border around an element, WPF provides the Border element. Similar to other WPF elements, the Border has Width, Height, Background and HorizontalAlignment and VerticalAlignment properties.

Besides these common properties, a Border has two properties that make the Border a border. These two properties are BorderThickness and BorderBrush. The BorderBrush property represents the brush that is used to draw the border. The BorderThickness property represents the thickness of the border.

The CornerRadius property represents the degree to which the corners of a Border are rounded.

The following code snippet creates a Border element and sets its properties.
  1. <Border    
  2. BorderThickness="5"    
  3. BorderBrush="Green"    
  4. CornerRadius="10"    
  5. Background="LightGray"    
  6. HorizontalAlignment="Left"    
  7. VerticalAlignment="Top"    
  8. Width="270"    
  9. Height="250" />    

The code snippet in Listing 1 creates a Border around a Canvas element and sets its properties.

The output looks as in Figure 1 where all child controls are wrapped horizontally.

  1. < Border  
  2. BorderThickness = "5"  
  3. BorderBrush = "Green"  
  4. CornerRadius = "10"  
  5. Background = "LightGray"  
  6. HorizontalAlignment = "Left"  
  7. VerticalAlignment = "Top"  
  8. Width = "270"  
  9. Height = "250" >  
  10.   
  11. < Canvas Background = "LightCyan" > < Rectangle Canvas.Left = "30"  
  12. Canvas.Top = "20"  
  13. Height = "200"  
  14. Width = "200"  
  15. Stroke = "Black"  
  16. StrokeThickness = "10"  
  17. Fill = "Red" / >  
  18.   
  19. < /Canvas>    
  20.     
  21. </Border >   

Listing 1

The output looks as in Figure 1 where you can see the Green border with rounded corners.



Figure 1

The Border class in WPF represents a Border element. The code snippet listed in Listing 2 creates a Border, sets its properties and places it around a Canvas element.

  1. private void CreateDynamicBorder()   
  2. {  
  3.     Border border = new Border();  
  4.     border.Background = new SolidColorBrush(Colors.LightGray);  
  5.     border.BorderThickness = new Thickness(5);  
  6.     border.BorderBrush = new SolidColorBrush(Colors.Green);  
  7.     border.CornerRadius = new CornerRadius(15);  
  8.     border.Width = 270;  
  9.     border.Height = 250;  
  10.     Canvas cnvas = new Canvas();  
  11.     Rectangle rect = new Rectangle();  
  12.     rect.Width = 200;  
  13.     rect.Height = 200;  
  14.     rect.Fill = new SolidColorBrush(Colors.Black);  
  15.     rect.StrokeThickness = 10d;  
  16.     cnvas.Children.Add(rect);  
  17.     border.Child = cnvas;  
  18.     RootLayout.Content = border;  
  19. }   

Listing 2

Note: a Border can have only one child element. If you need to place a border around multiple elements, you must place a border around each element.

Summary

In this article, I discussed the borders of WPF elements. In the next article of this series, I will focus on the VirtializingStackPanel in details.