如果已经在xaml c#中的另一个组合框中选择了一个combox项,如何禁用它?

时间:2016-06-03 20:24:52

标签: c# wpf xaml

我有两个组合框绑定到相同的ObservableCollection属性,我想知道是否可以禁用combox中的项目,如果它已经在其中一个中被选中了?在wpf。 THX

2 个答案:

答案 0 :(得分:0)

你可以:

  1. 使用以下内容设置ComboBoxItem的IsEnabled属性:Disallow/Block selection of disabled combobox item in wpf(感谢Kamil获取链接)
  2. 让它看起来不同(但仍可选择);
  3. 更新第二个列表,以便在选择第一个列表时删除所选选项;或
  4. 事后应用验证(例如,显示错误图标/消息,或者如果两个选项相同则禁用“提交”按钮)。
  5. 您的选择仅取决于您尝试实现的经验。

答案 1 :(得分:0)

您可以将ComboBox项的IsSelected属性绑定到一个bool,用于标识类中的选定状态。

wildcard

创建一个暴露几个bool的类

 <ComboBox ItemsSource="{Binding Items}">
        <ComboBox.ItemContainerStyle>
            <Style TargetType="ComboBoxItem">
                <Setter Property="IsSelected" Value="{Binding SelectedA, Mode=OneWayToSource}"></Setter>
                <Setter Property="IsEnabled" Value="{Binding SelectedB}"></Setter>
            </Style>
        </ComboBox.ItemContainerStyle>
    </ComboBox>
    <ComboBox ItemsSource="{Binding Items}">
        <ComboBox.ItemContainerStyle>
            <Style TargetType="ComboBoxItem">
                <Setter Property="IsSelected" Value="{Binding SelectedB, Mode=OneWayToSource}"></Setter>
                <Setter Property="IsEnabled" Value="{Binding SelectedA}"></Setter>
            </Style>
        </ComboBox.ItemContainerStyle>
    </ComboBox>

(在示例中,我只是在吸气器中反转每个选定的bool,但实际上翻转bool可能最好使用转换器执行)