Mein InverseBooleanConverter berücksichtigt auch den Typ Nullable<bool>. Dies kann zum Beispiel für Checkboxen wichtig sein kein, wenn man die Property IsThreeState auf true gesetzt hat, um 3 States (true, false und null) abzubilden.
Folgend der Converter:
public class InverseBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return InverseValue(value, targetType);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return InverseValue(value, targetType);
}
private static object InverseValue(object value, Type targetType)
{
if (targetType != typeof(bool) && targetType != typeof(bool?))
throw new InvalidOperationException("The targetType must be a bool!");
if (value == null)
return null;
return !(bool)value;
}
}
Und hier die Beispielview mit dem XAML Code.
<StackPanel>
<StackPanel.Resources>
<wpf:InverseBooleanConverter x:Key="InverseBooleanConverter" />
</StackPanel.Resources>
<CheckBox x:Name="IsEnabled" IsChecked="True" HorizontalAlignment="Center" />
<TextBox Width="80" Height="20" IsEnabled="{Binding Path=IsChecked, ElementName=IsEnabled}">text 1</TextBox>
<TextBox Width="80" Height="20" IsEnabled="{Binding Path=IsChecked, ElementName=IsEnabled, Converter={StaticResource InverseBooleanConverter}}">text 2</TextBox>
</StackPanel>
Keine Kommentare:
Kommentar veröffentlichen