I have the following xaml:
<Window x:Class="SharedSizeGroupBug.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</Window.Resources>
<StackPanel Grid.IsSharedSizeScope="True">
<ToggleButton IsChecked="False" Name="TB" Content="Toggle" />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="DZG" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Text="A1" Width="100" />
<TextBlock Text="A2" Grid.Column="1" />
</Grid>
<Grid Visibility="{Binding IsChecked, ElementName=TB, Converter={StaticResource BooleanToVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="DZG" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Text="B1" Width="200" />
<TextBlock Text="B2" Grid.Column="1" />
</Grid>
</StackPanel>
</Window>
When you try this, the initial state the first column is 100 wide. When the button is pressed and the second grid is made visible, the first column is made 200 wide. However, when you press the button again, the column will still be 200 wide.