[英]How to bind a property to false value
我想將ComboBox的IsEnabled屬性綁定到復選框的IsChecked屬性,而我希望僅在復選框值為FALSE時才啟用ComboBox。
IsEnabled="{Binding ElementName=RegexCbx, Path=IsChecked}"
最簡單的方法是什么?
使用樣式觸發器:
<StackPanel>
<CheckBox x:Name="Foo" Content="Click me"/>
<ComboBox>
<ComboBox.Style>
<Style TargetType="{x:Type ComboBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=Foo}" Value="True">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
</StackPanel>
從IValueConverter派生的類應做到這一點:
public class BoolToOppositeBoolConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
if (targetType != typeof(bool))
throw new InvalidOperationException("The target must be a boolean");
return !(bool)value;
}
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
#endregion
}
最好在資源字典中,創建轉換器的實例:
<converters:BoolToOppositeBoolConverter x:Key="oppositeBoolConverter" />
然后在您的視圖中執行類似的操作,將IsChecked的布爾值轉換為相反的值。 不要忘記將資源字典作為視圖資源。
<TextBox IsEnabled="{Binding IsChecked, Converter={StaticResource oppositeBoolConverter}" />
另一種方法是使用Blend的DataTrigger
:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ie="http://schemas.microsoft.com/expression/2010/interactions"
<ComboBox>
<i:Interaction.Triggers>
<ie:DataTrigger Binding="{Binding IsChecked, ElementName=RegexCbx}"
Value="False">
<ie:ChangePropertyAction PropertyName="IsEnabled"
TargetObject="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ComboBox}}"
Value="True"/>
</ie:DataTrigger>
<ie:DataTrigger Binding="{Binding IsChecked, ElementName=RegexCbx}"
Value="True">
<ie:ChangePropertyAction PropertyName="IsEnabled"
TargetObject="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ComboBox}}"
Value="False"/>
</ie:DataTrigger>
</i:Interaction.Triggers>
</ComboBox>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.