Use the IsSharedSizeScope attached property of the Grid element

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 IsSharedSizeScope Sample">
    <Border BorderBrush="Black" Background="White" BorderThickness="2">

  <DockPanel Name="dp1" Grid.IsSharedSizeScope="False" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10">
    <StackPanel Orientation="Horizontal" DockPanel.Dock="Top">  
        <Button Click="setTrue" Margin="0,0,10,10">Set IsSharedSizeScope="True"</Button>
        <Button Click="setFalse" Margin="0,0,10,10">Set IsSharedSizeScope="False"</Button>
    </StackPanel> 

    <StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
 
    <Grid ShowGridLines="True" Margin="0,0,10,0">
      <Grid.ColumnDefinitions>
        <ColumnDefinition SharedSizeGroup="FirstColumn"/>
        <ColumnDefinition SharedSizeGroup="SecondColumn"/>
      </Grid.ColumnDefinitions>
      <Grid.RowDefinitions>
        <RowDefinition Height="Auto" SharedSizeGroup="FirstRow"/>
      </Grid.RowDefinitions>
        <Rectangle Fill="Silver" Grid.Column="0" Grid.Row="0" Width="200" Height="100"/>
        <Rectangle Fill="Blue" Grid.Column="1" Grid.Row="0" Width="150" Height="100"/>

        <TextBlock Grid.Column="0" Grid.Row="0" FontWeight="Bold">First Column</TextBlock>
        <TextBlock Grid.Column="1" Grid.Row="0" FontWeight="Bold">Second Column</TextBlock>
    </Grid>

    <Grid ShowGridLines="True">
      <Grid.ColumnDefinitions>
        <ColumnDefinition SharedSizeGroup="FirstColumn"/>
        <ColumnDefinition SharedSizeGroup="SecondColumn"/>
      </Grid.ColumnDefinitions>
      <Grid.RowDefinitions>        
        <RowDefinition Height="Auto" SharedSizeGroup="FirstRow"/>
      </Grid.RowDefinitions>

        <Rectangle Fill="Silver" Grid.Column="0" Grid.Row="0"/>
        <Rectangle Fill="Blue" Grid.Column="1" Grid.Row="0"/>
 
        <TextBlock Grid.Column="0" Grid.Row="0" FontWeight="Bold">First Column</TextBlock>
        <TextBlock Grid.Column="1" Grid.Row="0" FontWeight="Bold">Second Column</TextBlock>
    </Grid>
    
    </StackPanel>

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

//File:Window.xaml.cs

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

namespace WpfApplication1
{
  public partial class Window1 : Window
  {
        public void setTrue(object sender, System.Windows.RoutedEventArgs e)
        {
            Grid.SetIsSharedSizeScope(dp1, true);
            Console.WriteLine(Grid.GetIsSharedSizeScope(dp1).ToString());
        }

        public void setFalse(object sender, System.Windows.RoutedEventArgs e)
        {
            Grid.SetIsSharedSizeScope(dp1, false);
            Console.WriteLine(Grid.GetIsSharedSizeScope(dp1).ToString());
        }
  }
}