Ich habe eine viel einfachere Lösung als die Verwendung eines Attached Behavior.
Alles, was Sie tun müssen, ist die Eigenschaft Width der GridViewColumn mit einem Boolean in Ihrem ViewModel zu verbinden. Dann erstellen Sie einen einfachen Konverter wie BooleanToWidthConverter, der einen Boolean nimmt und einen Double zurückgibt, Null, wenn es falsch ist, x Breite, wenn es wahr ist.
Ich hoffe, dies hilft Ihnen und macht Ihnen das Leben leichter.
XAML:
<GridViewColumn x:Name="MyHiddenGridViewColumn"
Width={Binding Path=IsColumnVisibleProperty, Converter={StaticResource BooleanToWidthConverter}}">
<!-- GridViewColumn.HeaderTemplate etc. goes here. -->
</GridViewColumn>
Konverter:
public class BooleanToWidthConverter : IValueConverter
{
private const double Column_Width = 40.0;
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null && value != DependencyProperty.UnsetValue)
{
bool isVisible = (bool) value;
return isVisible ? Column_Width : 0;
}
return Column_Width;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}