Grid Preview mouse down event

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="Routed Events" Height="400" Width="800">
  
    <Grid Name="contentGrid" PreviewMouseDown="Generic_MouseDown" Background="Red">
        <Rectangle Name="clickMeRectangle" 
                   Height="70" 
                   Width="70" 
                   Stroke="Black" 
                   Fill="CadetBlue" />
        <Button Name="clickMeButton" 
                Height="23" 
                HorizontalAlignment="Right" 
                VerticalAlignment="Top" 
                Width="70" 
                MouseDown="Generic_MouseDown" 
                PreviewMouseDown="Generic_MouseDown" 
                Click="clickMeButton_Click">Click Me</Button>
        <TextBlock Name="outputText" />
    </Grid>
</Window>

//File:Window.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
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.Navigation;
using System.Windows.Shapes;

namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        private void Generic_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Console.WriteLine(outputText.Text);
            Console.WriteLine(e.RoutedEvent.Name);
            Console.WriteLine(sender.ToString());
            Console.WriteLine(((FrameworkElement)e.Source).Name);
        }

        private void Window_MouseUp(object sender, MouseButtonEventArgs e)
        {
            outputText.Text = outputText.Text;
        }

        private void clickMeButton_Click(object sender, RoutedEventArgs e)
        {
            outputText.Text = "Button clicked:" + outputText.Text;
        }
    }
}

   
    
     


Setting Grid row heights 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;
        }

    }
}

   
    
     


Layout Controls with Grid 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;
        }

    }
}

   
    
     


Arrange the children for Grid

image_pdfimage_print


   
        

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  Title="About WPF" 
  Background="OrangeRed">
    <Grid Background="LightBlue">
      <!-- Define four rows: -->
      <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
      </Grid.RowDefinitions>
    
      <!-- Define two columns: -->
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition/>
      </Grid.ColumnDefinitions>
    
      <Label    Grid.Row="0" Grid.Column="0" Background="Blue" Foreground="White" HorizontalContentAlignment="Center"
                Grid.ColumnSpan="2">Start Page</Label>
      <GroupBox Grid.Row="1" Grid.Column="0" Background="White" Header="Recent Projects">...</GroupBox>
      <GroupBox Grid.Row="2" Grid.Column="0" Background="White" Header="Getting Started">...</GroupBox>
      <GroupBox Grid.Row="3" Grid.Column="0" Background="White" Header="Headlines">...</GroupBox>
      <GroupBox Grid.Row="1" Grid.Column="1" Background="White" Header="Online Articles" Grid.RowSpan="3">
        <ListBox>
          <ListBoxItem>Article #1</ListBoxItem>
          <ListBoxItem>Article #2</ListBoxItem>
          <ListBoxItem>Article #3</ListBoxItem>
          <ListBoxItem>Article #4</ListBoxItem>
        </ListBox>
      </GroupBox>
    </Grid>


</Window>

   
    
    
    
    
    
    
    
     


Set Row Height and column Width for Grid

image_pdfimage_print


   
        
<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="GridButton" Height="193" Width="219">
    <Grid>
        <Button Name="btnGrid" Height="100" Width="150">
            <Grid Height="90" Width="140">
                <Grid.RowDefinitions>
                    <RowDefinition Height="33*" />
                    <RowDefinition Height="33*" />
                    <RowDefinition Height="33*" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="33*" />
                    <ColumnDefinition Width="33*" />
                    <ColumnDefinition Width="33*" />
                </Grid.ColumnDefinitions>
                <Label Content="Left" Grid.Row="0" Grid.Column="0" />
                <Label Content="Middle" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" VerticalAlignment="Center" HorizontalAlignment="Center" />
                <Label Content="Right" Grid.Row="2" Grid.Column="2" VerticalAlignment="Bottom" HorizontalAlignment="Right" />
            </Grid>
        </Button>
    </Grid>
</Window>

   
    
    
    
    
    
    
    
     


Set Row and Column Index when Adding Buttons to Grid

image_pdfimage_print


   
        

<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="NineButtons" Height="195" Width="306">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="33*" />
            <RowDefinition Height="33*" />
            <RowDefinition Height="33*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="33*" />
            <ColumnDefinition Width="33*" />
            <ColumnDefinition Width="33*" />
        </Grid.ColumnDefinitions>
        <Button Grid.Row="0" Grid.Column="0" Margin="5">0,0</Button>
        <Button Grid.Row="0" Grid.Column="1" Margin="5">0,1</Button>
        <Button Grid.Row="0" Grid.Column="2" Margin="5">0,2</Button>
        <Button Grid.Row="1" Grid.Column="0" Margin="5">1,0</Button>
        <Button Grid.Row="1" Grid.Column="1" Margin="5">1,1</Button>
        <Button Grid.Row="1" Grid.Column="2" Margin="5">1,2</Button>
        <Button Grid.Row="2" Grid.Column="0" Margin="5">2,0</Button>
        <Button Grid.Row="2" Grid.Column="1" Margin="5">2,1</Button>
        <Button Grid.Row="2" Grid.Column="2" Margin="5">2,2</Button>
    </Grid>
</Window>