2016-08-18 53 views
0

我想根据选择的“ComboBoxItem”启用/禁用'CheckBox'元素。我不知道如何通过使用WPF绑定来实现此功能。WPF:选择哪个comoboboxItem的绑定

更具体地说,这里是我的xaml代码。

<ComboBox x:Name="typeComboBox" SelectedValuePath="Tag"> 
    <ComboBoxItem Content="type1" Tag="1"></ComboBoxItem> 
    <ComboBoxItem Content="type2" Tag="2" IsSelected="True"></ComboBoxItem> 
</ComboBox> 
<CheckBox x:Name="mode" Content="Mode" 
      IsEnabled="{Binding ElementName=typeComboBox, Path=SelectedValue??}"/> 

我希望只有当'type2'被选中,'mode'被启用。如果选择'type1',则应禁用'mode'。我可以将'CheckBox'的'IsEnabled'属性绑定到'ComboBox'的'selectedValue'属性吗?

我曾尝试将此函数实现为'SelectionChanged'事件,但发生'NullReferenceException'。所以我试图通过使用WPF绑定。

回答

2

这应该工作:

<ComboBox x:Name="typeComboBox" SelectedValuePath="Tag"> 
    <ComboBoxItem x:Name="box1" Content="type1" Tag="1"/> 
    <ComboBoxItem x:Name="box2" Content="type2" Tag="2" IsSelected="True"/> 
</ComboBox> 
<CheckBox x:Name="mode" Content="Mode" IsEnabled="{Binding ElementName=box2, Path=IsSelected}"/> 
+0

它的工作原理!非常感谢! – dolgom

0

试试这个:

<ComboBox x:Name="combo"> 
    <ComboBoxItem x:Name="type1" Content="type1" IsSelected="True"></ComboBoxItem> 
    <ComboBoxItem x:Name="type2" Content="type2"></ComboBoxItem> 
</ComboBox> 

<CheckBox> 
    <CheckBox.Style> 
     <Style> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsSelected, ElementName=type2}" Value="True"> 
        <Setter Property="CheckBox.IsEnabled" Value="True"></Setter> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding IsSelected, ElementName=type1}" Value="True"> 
        <Setter Property="CheckBox.IsEnabled" Value="False"></Setter> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </CheckBox.Style> 
</CheckBox> 
+0

它的工作原理,但CheckBox的风格也发生了变化。 感谢您的回答! – dolgom