WPF绑定组合框和复选框

本文关键字:复选框 组合 绑定 WPF | 更新日期: 2023-09-27 18:04:58

我想绑定一个ComboBox和一个CheckBox,这样当CheckBox 未被选中时,ComboBox是启用的。我可以直接在xaml文件中做到这一点,而不需要在代码中添加任何额外的变量吗?
在下面的代码中,myComboBox在myCheckBox 被选中时被启用。

<ComboBox Name="myComboBox" SelectedIndex="0" 
     IsEnabled="{Binding ElementName=myCheckBox, Path=IsChecked}">

WPF绑定组合框和复选框

您需要一个转换器将布尔值转换为它的倒置值。为了做到这一点,首先创建一个继承自IValueConverter的类,如下所示:

public sealed class InvertedBooleanConverter : IValueConverter
{
    public Object Convert( Object value, Type targetType, Object parameter, CultureInfo culture )
    {
        if ( value is Boolean )
        {
            return (Boolean)value ? false : true;
        }
        return null;
    }

    public Object ConvertBack( Object value, Type targetType, Object parameter, CultureInfo culture )
    {
        throw new NotImplementedException();
    }
}

然后您需要在资源中添加转换器,如下所示:

<Window.Resources>
    <local:InvertedBooleanConverter x:Key="InvertedBooleanConverter" />
</Window.Resources>

最后像这样将转换器添加到绑定中:

<ComboBox Name="myComboBox"
          SelectedIndex="0"
          IsEnabled="{Binding ElementName=myCheckBox, Path=IsChecked, Converter={StaticResource InvertedBooleanConverter}}">