ich habe eine viel einfachere Lösung als ein angebaute Verhalten verwenden.
Alles, was Sie tun müssen, ist die Width-Eigenschaft der GridViewColumn mit einem boolean auf Ihrem ViewModel zu binden. Dann erstellen Sie einen einfachen Converter wie BooleanToWidthConverter, der einen booleschen Wert annimmt und ein Double zurückgibt, Null, wenn es falsch ist, x Breite, wenn es wahr ist.
Ich hoffe, das hilft und macht Ihr Leben leichter.
XAML:
<GridViewColumn x:Name="MyHiddenGridViewColumn"
Width={Binding Path=IsColumnVisibleProperty, Converter={StaticResource BooleanToWidthConverter}}">
<!-- GridViewColumn.HeaderTemplate etc. goes here. -->
</GridViewColumn>
Converter:
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();
}
}
Ich habe erkannt, dass dies nur auf den Spaltenkopf versteckt, und das ist wahrscheinlich nicht das, was Sie tun wollte. Ich finde keine Möglichkeit, die ganze Spalte mit nur Xaml zu verstecken, außer nur eine zweite Gridview zu machen. –
Wenn Sie die Breite einer GridViewColumn auf 0 setzen, wird sie effektiv ausgeblendet. –
Ich habe das versucht, aber es ist dann nicht wirklich weg. Sie können es immer noch mit der Maus erweitern. –