Mit dem folgenden XAML wird die untere Zeile ausgeblendet, wenn Sie das Kontrollkästchen deaktivieren. Alles ist gut, bis du es mit dem Gridsplitter skalierst. Das Aktivieren/Deaktivieren der Checkbox macht dann nichts. Da der Konverter die Höhe auf 0 setzt, habe ich erwartet, dass sich die Zeile versteckt. Was ist los? Wie kann ich die Höhen nach dem Verschieben des Splitters zurücksetzen?Zurücksetzen der Rasterzeilenhöhe nach der Verwendung des Splitters?
<Grid>
<Grid.Resources>
<m:CheckedToLengthConverter x:Key="checkedToLengthConverter" />
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="3*" />
<RowDefinition Height="{Binding Mode=OneWay, ElementName=ShowBottomCheckBox, Path=IsChecked, Converter={StaticResource checkedToLengthConverter}, ConverterParameter=2}" />
</Grid.RowDefinitions>
<Border Background="Blue" />
<CheckBox Name="ShowBottomCheckBox" IsChecked="True" />
<GridSplitter HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Height="5" />
<Border Background="Red" Grid.Row="1" />
</Grid>
Converter:
public class CheckedToLengthConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if ((bool)value)
return new GridLength(int.Parse(parameter.ToString()), GridUnitType.Star);
return new GridLength(0, GridUnitType.Pixel);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Können Sie ein Beispiel geben? Ich kann es nicht funktionieren lassen. – Manuel
@Manuel, ich habe etwas geschaffen, das für mich funktioniert. – Phil