У меня была такая же проблема, но со строками вместо столбцов. В конце концов я победил его с помощью пользовательского конвертера привязки ivalue и, в основном, удалил / восстановил группу общего размера на основе ограниченной видимости.
Вот конвертер:
class VisibilityToSharedSizeGroupConverter : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (((System.Windows.Visibility)value) == System.Windows.Visibility.Visible) ? parameter : string.Empty;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return System.Windows.Data.Binding.DoNothing;
}
}
Вот пример XAML:
<Window.Resources>
<local:VisibilityToSharedSizeGroupConverter x:Key="VisToShared" />
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"
SharedSizeGroup="{Binding Converter={StaticResource ResourceKey=VisToShared}, ConverterParameter='LabelsGroup', ElementName=MyLabel1, Path=Visibility}"/>
</RowDefinition>
</Grid.RowDefinitions>
</Grid>