Introduction
Grid Panel is the most complicated but versatile panel among all panels in WPF. A Grid panel can be used to design complicated user interfaces where we need to place multiple elements in a tabular form of rows and columns layout.

The Grid element in XAML represents a Grid panel. The following code snippet creates a Grid element and sets its background, width, height, vertical and horizontal alignment properties.
- <Grid Name="GridPanel" Background="Blue" Width="280" Height="220"
- VerticalAlignment="Top" HorizontalAlignment="Center" >
- </Grid>

Figure 1
Grid Properties
Grid has three major properties - RowDefinitions, ColumnDefinitions, and ShowGridLines. The RowDefinitions property is a collection of RowDefintion. The ColumnDefinitions property represents a collection of ColumnDefinition. The ShowGridLines property represents if grid lines of a Grid panel are visible or not.
Create Grid
The Grid element in XAML represents a WPF Grid control. The following code snippet creates a Grid control, sets it width and foreground color and make sure grid lines are visible.
- <Grid Name="MCGrid" Width="400" Background="LightSteelBlue" ShowGridLines="True" \>
- <Grid.ColumnDefinitions>
- <ColumnDefinition/>
- <ColumnDefinition/>
- <ColumnDefinition/>
- </Grid.ColumnDefinitions>
- <Grid.RowDefinitions>
- <RowDefinition Height="45"/>
- <RowDefinition Height="45"/>
- <RowDefinition Height="45"/>
- </Grid.RowDefinitions>
- <TextBlock Grid.Row="1" Grid.Column="2" Foreground="Green"
- Text="Age" Height="20" VerticalAlignment="Top" />
- <Window x:Class="GridSample.Window1"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- Title="Window1" Height="300" Width="450" WindowStyle="ThreeDBorderWindow">
- <Grid Name="MCGrid" Width="400" Background="LightSteelBlue" ShowGridLines="True">
- <Grid.ColumnDefinitions>
- <ColumnDefinition />
- <ColumnDefinition />
- <ColumnDefinition />
- </Grid.ColumnDefinitions>
- <Grid.RowDefinitions>
- <RowDefinition Height="45" />
- <RowDefinition Height="45" />
- <RowDefinition Height="45" />
- </Grid.RowDefinitions>
- <TextBlock FontSize="14" FontWeight="Bold" Grid.Row="0" Grid.Column="0" Foreground="Green"
- Text="Author Name" Height="20" VerticalAlignment="Top" />
- <TextBlock FontSize="14" FontWeight="Bold" Grid.Row="0" Grid.Column="1" Foreground="Green"
- Text="Age" Height="20" VerticalAlignment="Top" />
- <TextBlock FontSize="14" FontWeight="Bold" Grid.Row="0" Grid.Column="2" Foreground="Green"
- Text="Book" Height="20" VerticalAlignment="Top"/>
- <TextBlock FontSize="12" Grid.Row="1" Grid.Column="0">Mahesh Chand</TextBlock>
- <TextBlock FontSize="12" Grid.Row="1" Grid.Column="1">33</TextBlock>
- <TextBlock FontSize="12" Grid.Row="1" Grid.Column="2">GDI+ Programming</TextBlock>
- <TextBlock FontSize="12" Grid.Row="2" Grid.Column="0">Mike Gold</TextBlock>
- <TextBlock FontSize="12" Grid.Row="2" Grid.Column="1">35</TextBlock>
- <TextBlock FontSize="12" Grid.Row="2" Grid.Column="2">Programming C#</TextBlock>
- </Grid>
- </Window>
The output looks like Figure 2.

Figure 2
Create a Grid Dynamically
The Grid class in WPF represents a Grid control. The following code snippet creates a Grid control, sets its width, horizontal alignment, vertical alignment, shows grid lines, and background color.
- Grid DynamicGrid = new Grid();
- DynamicGrid.Width = 400;
- DynamicGrid.HorizontalAlignment = HorizontalAlignment.Left;
- DynamicGrid.VerticalAlignment = VerticalAlignment.Top;
- DynamicGrid.ShowGridLines = true;
- DynamicGrid.Background = new SolidColorBrush(Colors.LightSteelBlue);
- // Create Columns
- ColumnDefinition gridCol1 = new ColumnDefinition();
- ColumnDefinition gridCol2 = new ColumnDefinition();
- ColumnDefinition gridCol3 = new ColumnDefinition();
- DynamicGrid.ColumnDefinitions.Add(gridCol1);
- DynamicGrid.ColumnDefinitions.Add(gridCol2);
- DynamicGrid.ColumnDefinitions.Add(gridCol3);
- // Create Rows
- RowDefinition gridRow1 = new RowDefinition();
- gridRow1.Height = new GridLength(45);
- RowDefinition gridRow2 = new RowDefinition();
- gridRow2.Height = new GridLength(45);
- RowDefinition gridRow3 = new RowDefinition();
- gridRow3.Height = new GridLength(45);
- DynamicGrid.RowDefinitions.Add(gridRow1);
- DynamicGrid.RowDefinitions.Add(gridRow2);
- DynamicGrid.RowDefinitions.Add(gridRow3);
- // Add first column header
- TextBlock txtBlock1 = new TextBlock();
- txtBlock1.Text = "Author Name";
- txtBlock1.FontSize = 14;
- txtBlock1.FontWeight = FontWeights.Bold;
- txtBlock1.Foreground = new SolidColorBrush(Colors.Green);
- txtBlock1.VerticalAlignment = VerticalAlignment.Top;
- Grid.SetRow(txtBlock1, 0);
- Grid.SetColumn(txtBlock1, 0);
- DynamicGrid.Children.Add(txtBlock1);
The complete code is listed in Listing 2.




Sampat PatilPosted Mar 19, 2015, 8:30 AM
how can we enable scroll bar for abve code... pls rely
Gurunatha DogiPosted Jul 31, 2014, 4:26 AM
Nice article in simple words step by step...Thank you @Mahesh Sir
shivank thakurPosted Oct 19, 2012, 6:18 AM
Can we apply paging on Grid?
Mudassar DarPosted Nov 2, 2010, 3:39 PM
Hello: last part of artical showes how to attach am background image to grid. I have a similar code to attach an image to a grid which is attached to TabControl window. The is bigger than tabcontrol there it shrinks and get skewed to fit into TabControl. Is there a way to TabControl to show scrollbar and scroll the image up/down and left/Right thanks [email protected]
Rajendra TripathyPosted Sep 29, 2010, 7:58 AM
Hi. Your article is helpful, but I need Cell Merging In WPF DataGrid (Windows Application C#). Will you Guide me in this? for more detail u can see- http://img709.imageshack.us/img709/6213/cellmerged.jpg