In einem kleinen Dienstprogramm schrieb ich Ich habe eine Listenansicht, in der der Benutzer einige Spalten aus- und einblenden kann. Es gibt keine Sichtbarkeit-Eigenschaft auf die Spalten, so dass ich beschlossen, die versteckten Spalten Breite auf Null gesetzt. Nicht ideal, da der Benutzer immer noch ihre Größe ändern und sie wieder sichtbar machen kann.
Wie auch immer, ich habe dazu Folgendes verwendet:
<GridViewColumn.Width>
<MultiBinding Converter="{StaticResource WidthConverter}" Mode="TwoWay">
<Binding Path="ThreadIdColumnWidth" Mode="TwoWay" />
<Binding Path="IsThreadIdShown" />
</MultiBinding>
</GridViewColumn.Width>
IsThreadIdShown
ist an ein Kontrollkästchen in der Symbolleiste gebunden. Und der Mehrwertkonverter ist:
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) {
if (values.Length != 2) {
return null;
}
object o0 = values[0];
object o1 = values[1];
if (! (o1 is bool)) {
return o0;
}
bool toBeDisplayed = (bool) o1;
if (! toBeDisplayed) {
return 0.0;
}
if (! (o0 is double)) {
return 0;
}
return (double) o0;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) {
return new object[] { (double)value, Binding.DoNothing };
}