Set control to specific row and column in code

image_pdfimage_print


   
  
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="" Height="300" Width="300"
    >
</Window>


//File:Window.xaml.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;


namespace WpfApplication1
{
    public partial class Window1 : System.Windows.Window
    {

        public Window1()
        {
            InitializeComponent();
            Grid g = new Grid();
            RowDefinition r = new RowDefinition();
            r.Height = new GridLength(0, GridUnitType.Auto);
            g.RowDefinitions.Add(r);
            r = new RowDefinition();
            r.Height = new GridLength(2, GridUnitType.Star);
            g.RowDefinitions.Add(r);
            r = new RowDefinition();
            r.Height = new GridLength(1, GridUnitType.Star);
            g.RowDefinitions.Add(r);

            ColumnDefinition c = new ColumnDefinition();
            c.Width = new GridLength(0, GridUnitType.Auto);
            g.ColumnDefinitions.Add(c);
            c = new ColumnDefinition();
            g.ColumnDefinitions.Add(c);

            TextBlock tb = new TextBlock();
            tb.Text = "Protocol:";
            Grid.SetColumn(tb, 0);
            Grid.SetRow(tb, 0);
            g.Children.Add(tb);

            tb = new TextBlock();
            tb.Text = "HyperText Transfer Protocol:";
            Grid.SetColumn(tb, 1);
            Grid.SetRow(tb, 0);
            g.Children.Add(tb);

            tb = new TextBlock();
            tb.Text = "Type:";
            Grid.SetColumn(tb, 0);
            Grid.SetRow(tb, 1);
            g.Children.Add(tb);

            tb = new TextBlock();
            tb.Text = "HTML Document";
            Grid.SetColumn(tb, 1);
            Grid.SetRow(tb, 1);
            g.Children.Add(tb);

            tb = new TextBlock();
            tb.Text = "Connection:";
            Grid.SetColumn(tb, 0);
            Grid.SetRow(tb, 2);
            g.Children.Add(tb);

            tb = new TextBlock();
            tb.Text = "Not encrypted";
            Grid.SetColumn(tb, 1);
            Grid.SetRow(tb, 2);
            g.Children.Add(tb);

            g.ShowGridLines = true;
            this.Content = g;
        }

    }
}

   
    
     


Show Grid lines in code

image_pdfimage_print


   
  

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="" Height="300" Width="300"
    >
</Window>


//File:Window.xaml.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;


namespace WpfApplication1
{
    public partial class Window1 : System.Windows.Window
    {

        public Window1()
        {
            InitializeComponent();
            Grid g = new Grid();
            RowDefinition r = new RowDefinition();
            r.Height = new GridLength(0, GridUnitType.Auto);
            g.RowDefinitions.Add(r);
            r = new RowDefinition();
            r.Height = new GridLength(2, GridUnitType.Star);
            g.RowDefinitions.Add(r);
            r = new RowDefinition();
            r.Height = new GridLength(1, GridUnitType.Star);
            g.RowDefinitions.Add(r);

            ColumnDefinition c = new ColumnDefinition();
            c.Width = new GridLength(0, GridUnitType.Auto);
            g.ColumnDefinitions.Add(c);
            c = new ColumnDefinition();
            g.ColumnDefinitions.Add(c);

            TextBlock tb = new TextBlock();
            tb.Text = "Protocol:";
            Grid.SetColumn(tb, 0);
            Grid.SetRow(tb, 0);
            g.Children.Add(tb);

            tb = new TextBlock();
            tb.Text = "HyperText Transfer Protocol:";
            Grid.SetColumn(tb, 1);
            Grid.SetRow(tb, 0);
            g.Children.Add(tb);

            tb = new TextBlock();
            tb.Text = "Type:";
            Grid.SetColumn(tb, 0);
            Grid.SetRow(tb, 1);
            g.Children.Add(tb);

            tb = new TextBlock();
            tb.Text = "HTML Document";
            Grid.SetColumn(tb, 1);
            Grid.SetRow(tb, 1);
            g.Children.Add(tb);

            tb = new TextBlock();
            tb.Text = "Connection:";
            Grid.SetColumn(tb, 0);
            Grid.SetRow(tb, 2);
            g.Children.Add(tb);

            tb = new TextBlock();
            tb.Text = "Not encrypted";
            Grid.SetColumn(tb, 1);
            Grid.SetRow(tb, 2);
            g.Children.Add(tb);

            g.ShowGridLines = true;
            this.Content = g;
        }

    }
}

   
    
     


Programmatically use the positioning methods of Grid

image_pdfimage_print


   
  

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="WpfApplication1.Window1"
    Title="Grid Methods Sample">
    <DockPanel VerticalAlignment="Top" HorizontalAlignment="Left">
        <Grid Margin="10" DockPanel.Dock="Left">
          <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
          </Grid.ColumnDefinitions>
          <Grid.RowDefinitions>
            <RowDefinition/>
          </Grid.RowDefinitions>
          <StackPanel Grid.Column="0" Grid.Row="0" HorizontalAlignment="Left" Orientation="Vertical">
            <Button Click="setCol0">Move Rectangle to Column 0</Button>
            <Button Click="setCol1">Move Rectangle to Column 1</Button>
            <Button Click="setCol2">Move Rectangle to Column 2</Button>
            <Button Click="setRow0">Move Rectangle to Row 0</Button>
            <Button Click="setRow1">Move Rectangle to Row 1</Button>
            <Button Click="setRow2">Move Rectangle to Row 2</Button>
            <Button Click="setColspan">Span All Columns</Button>
            <Button Click="setRowspan">Span All Rows</Button>
          </StackPanel>
        </Grid>
      <Grid DockPanel.Dock="Top" Name="grid1" ShowGridLines="True" Width="400" Height="400">
        <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
      </Grid.ColumnDefinitions>
      <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
      </Grid.RowDefinitions>
        <Rectangle Name="rect1" Fill="Silver" Grid.Column="0" Grid.Row="0"/>
        <TextBlock FontSize="15" HorizontalAlignment="Right" VerticalAlignment="Bottom" Grid.Column="0" Grid.Row="0" Margin="5">Column 0, Row 0</TextBlock>
        <TextBlock FontSize="15" HorizontalAlignment="Right" VerticalAlignment="Bottom" Grid.Column="1" Grid.Row="0" Margin="5">Column 1, Row 0</TextBlock>
        <TextBlock FontSize="15" HorizontalAlignment="Right" VerticalAlignment="Bottom" Grid.Column="2" Grid.Row="0" Margin="5">Column 2, Row 0</TextBlock>
        <TextBlock FontSize="15" HorizontalAlignment="Right" VerticalAlignment="Bottom" Grid.Column="0" Grid.Row="1" Margin="5">Column 0, Row 1</TextBlock>
        <TextBlock FontSize="15" HorizontalAlignment="Right" VerticalAlignment="Bottom" Grid.Column="1" Grid.Row="1" Margin="5">Column 1, Row 1</TextBlock>
        <TextBlock FontSize="15" HorizontalAlignment="Right" VerticalAlignment="Bottom" Grid.Column="2" Grid.Row="1" Margin="5">Column 2, Row 1</TextBlock>
        <TextBlock FontSize="15" HorizontalAlignment="Right" VerticalAlignment="Bottom" Grid.Column="0" Grid.Row="2" Margin="5">Column 0, Row 2</TextBlock>
        <TextBlock FontSize="15" HorizontalAlignment="Right" VerticalAlignment="Bottom" Grid.Column="1" Grid.Row="2" Margin="5">Column 1, Row 2</TextBlock>
        <TextBlock FontSize="15" HorizontalAlignment="Right" VerticalAlignment="Bottom" Grid.Column="2" Grid.Row="2" Margin="5">Column 2, Row 2</TextBlock>
      </Grid>
    </DockPanel>
</Window>
//File:Window.xaml.cs


using System;
using System.Windows;
using System.Windows.Controls;

namespace WpfApplication1
{
  public partial class Window1 : Window
  {
    private void setCol0(object sender, RoutedEventArgs e) 
    {
            Grid.SetColumn(rect1, 0);
            Console.WriteLine("Column " + Grid.GetColumn(rect1).ToString());

    }
        private void setCol1(object sender, RoutedEventArgs e)
        {
            Grid.SetColumn(rect1, 1);
            Console.WriteLine("Column " + Grid.GetColumn(rect1).ToString());
        }
        private void setCol2(object sender, RoutedEventArgs e)
        {
            Grid.SetColumn(rect1, 2);
            Console.WriteLine("Column " + Grid.GetColumn(rect1).ToString());
        }
    private void setRow0(object sender, RoutedEventArgs e)
    {
            Grid.SetRow(rect1, 0);
            Console.WriteLine("Row " + Grid.GetRow(rect1).ToString());
    }
        private void setRow1(object sender, RoutedEventArgs e)
        {
            Grid.SetRow(rect1, 1);
            Console.WriteLine("Row " + Grid.GetRow(rect1).ToString());
        }
        private void setRow2(object sender, RoutedEventArgs e)
        {
            Grid.SetRow(rect1, 2);
            Console.WriteLine("Row " + Grid.GetRow(rect1).ToString());
        }
        private void setColspan(object sender, RoutedEventArgs e)
    {
            Grid.SetColumnSpan(rect1, 3);
            Console.WriteLine("ColumnSpan " + Grid.GetColumnSpan(rect1).ToString());
    }
    private void setRowspan(object sender, RoutedEventArgs e)
    {
            Grid.SetRowSpan(rect1, 3);
            Console.WriteLine("RowSpan " + Grid.GetRowSpan(rect1).ToString());
    }
        private void clearAll(object sender, RoutedEventArgs e)
        {
            Grid.SetColumn(rect1, 0);
            Grid.SetRow(rect1, 0);
            Grid.SetColumnSpan(rect1, 1);
            Grid.SetRowSpan(rect1, 1);
        }
  }
}

   
    
     


Add a ColumnDefinition to Grid

image_pdfimage_print


   
  
<Window  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="WpfApplication1.Window1"
    Title="ColumnDefinitions Sample">
    <Border BorderBrush="Black" Background="White" BorderThickness="2">
  <DockPanel Margin="10,0,0,0">
    <TextBlock FontSize="20" FontWeight="Bold" DockPanel.Dock="Top">Grid Column and Row Collections</TextBlock>
        <Grid DockPanel.Dock="Top" HorizontalAlignment="Left" Name="grid1" ShowGridLines="true" Width="625" Height="400">
          <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
          </Grid.ColumnDefinitions>
          <Grid.RowDefinitions>
          <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
          </Grid.RowDefinitions>
        </Grid>

        <StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Width="625" DockPanel.Dock="Top">
            <Button Width="125" Click="addCol">Add Column</Button>
        </StackPanel>    

  </DockPanel>
  </Border>  
</Window>

//File:Window.xaml.cs

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;

namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        RowDefinition rowDef1;
        ColumnDefinition colDef1;

        private void addCol(object sender, RoutedEventArgs e) 
        {
            colDef1 = new ColumnDefinition();
            grid1.ColumnDefinitions.Add(colDef1);
        }

    }
}

   
    
     


Add a RowDefinition to Grid

image_pdfimage_print


   
  
<Window  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="WpfApplication1.Window1"
    Title="ColumnDefinitions Sample">
    <Border BorderBrush="Black" Background="White" BorderThickness="2">
  <DockPanel Margin="10,0,0,0">
    <TextBlock FontSize="20" FontWeight="Bold" DockPanel.Dock="Top">Grid Column and Row Collections</TextBlock>
        <Grid DockPanel.Dock="Top" HorizontalAlignment="Left" Name="grid1" ShowGridLines="true" Width="625" Height="400">
          <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
          </Grid.ColumnDefinitions>
          <Grid.RowDefinitions>
          <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
          </Grid.RowDefinitions>
        </Grid>

        <StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Width="625" DockPanel.Dock="Top">
            <Button Width="125" Click="addRow">Add Row</Button>
        </StackPanel>    

  </DockPanel>
  </Border>  
</Window>
//File:Window.xaml.cs


using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;

namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        RowDefinition rowDef1;
        ColumnDefinition colDef1;

        private void addRow(object sender, RoutedEventArgs e)
        {
            rowDef1 = new RowDefinition();
            grid1.RowDefinitions.Add(rowDef1);
        }

    }
}

   
    
     


Grid PreviewMouseDown action and MouseDown action

image_pdfimage_print


   
  

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="AddHandler" Height="300" Width="300">
  <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
    <Button>

      <Grid PreviewMouseDown="PreviewMouseDownGrid" MouseDown="MouseDownGrid">
        <Grid.ColumnDefinitions>
          <ColumnDefinition />
          <ColumnDefinition />
        </Grid.ColumnDefinitions>

        <Canvas Width="20" Height="18" VerticalAlignment="Center">

          <Ellipse x:Name="myEllipse" Canvas.Left="1" Canvas.Top="1" Width="16" Height="16"
                   Fill="Yellow" Stroke="Black" />
        </Canvas>

      </Grid>
    </Button>
  </Grid>
</Window>
//File:Window.xaml.cs


using System;
using System.Windows;
using System.Diagnostics;
using System.Windows.Shapes;
using System.Windows.Input;

namespace WpfApplication1
{
    public partial class Window1 : System.Windows.Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        void PreviewMouseDownGrid(object sender, RoutedEventArgs e){ 
            Debug.WriteLine("PreviewMouseDownGrid"); 
        }

        void MouseDownGrid(object sender, RoutedEventArgs e){ 
            Debug.WriteLine("MouseDownGrid"); 
        }
    }
}

   
    
     


Grid MouseLeftButtonDown action and PreviewMouseLeftButtonDown action

image_pdfimage_print


   
  



<Window x:Class="TunnelingBubbling.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="TunnelingBubbling">
  
    <Grid MouseLeftButtonDown="MouseDownGrid"
          PreviewMouseLeftButtonDown="PreviewMouseDownGrid"
      Width="300" Height="300">

    <Button PreviewMouseLeftButtonDown="PreviewMouseDownButton"
      MouseLeftButtonDown="MouseDownButton"
      Click="MyClickEvent"
      Name="btnGo">

      <TextBox MouseLeftButtonDown="MouseLeftButtonDown"
        PreviewMouseLeftButtonDown="PreviewMouseLeftButtonDown"
        Width="200" Height="30" Name="textBox1">
      </TextBox>
    </Button>
  </Grid>  
</Window>
//File:Window.xaml.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Diagnostics;

namespace TunnelingBubbling
{
    public partial class Window1 : System.Windows.Window
    {

        public Window1()
        {
            InitializeComponent();
        }

        private void PreviewMouseDownGrid(object sender, RoutedEventArgs e)
        {
            Debug.WriteLine("PreviewMouseDownGrid");
        }

        private void PreviewMouseDownButton(object sender, RoutedEventArgs e)
        {
            Debug.WriteLine("PreviewMouseDownButton");
        }

        private void PreviewMouseLeftButtonDown(object sender, RoutedEventArgs e)
        {
            Debug.WriteLine("PreviewMouseLeftButtonDown");
        }

        private void MyClickEvent(object sender, RoutedEventArgs e)
        {
            Debug.WriteLine("MyClickEvent");
        }

        private void MouseLeftButtonDown(object sender, RoutedEventArgs e)
        {
            Debug.WriteLine("MouseLeftButtonDown");
        }

        private void MouseDownButton(object sender, RoutedEventArgs e)
        {
            Debug.WriteLine("MouseDownButton");
        }

        private void MouseDownGrid(object sender, RoutedEventArgs e)
        {
            Debug.WriteLine("MouseDownGrid");
        }

    }
}