WPF - 在第一个组合框选择上启用第二个组合框

时间:2016-05-06 01:44:06

标签: c# .net wpf mvvm combobox

我有两个ComboBox,我想在选择First ComboBox时启用第二个ComboBox。我尝试添加IsEnabled属性,但似乎无法正常工作。我试过的代码如下。

<dxe:ComboBoxEdit Name="siteComboBox" HorizontalAlignment="Left" Margin="97,104,0,0" 
     VerticalAlignment="Top" Width="150" ItemsSource="{Binding Site}" 
     SelectedItem="{Binding SelectedSite}"/>
<dxe:ComboBoxEdit Name="planTypeComboBox" HorizontalAlignment="Left" Margin="97,159,0,0" 
     VerticalAlignment="Top" Width="150" 
     ItemsSource="{Binding PlanType}" SelectedItem="{Binding SelectedPlanType}" 
     IsEnabled="{Binding ElementName=siteComboBox}"/>

有谁可以指出我做错了什么?或者还有其他办法吗?

3 个答案:

答案 0 :(得分:2)

您可以使用DataTriggers。当所选项目为空时,将禁用第二个ComboBox

<dxe:ComboBoxEdit Name="siteComboBox" HorizontalAlignment="Left" Margin="97,104,0,0" 
     VerticalAlignment="Top" Width="150" ItemsSource="{Binding Site}" 
     SelectedItem="{Binding SelectedSite}"/>
<dxe:ComboBoxEdit Name="planTypeComboBox" HorizontalAlignment="Left" Margin="97,159,0,0" 
     VerticalAlignment="Top" Width="150" 
     ItemsSource="{Binding PlanType}" SelectedItem="{Binding SelectedPlanType}">
     <dxe:ComboBoxEdit.Style>
         <Style TargetType="{x:Type dxe:ComboBoxEdit}">
             <Setter Property="IsEnabled" Value="True"/>
             <Style.Triggers>
                 <DataTrigger Binding="{Binding ElementName=siteComboBox, Path=SelectedItem}" Value="{x:Null}">
                     <Setter Property="IsEnabled" Value="False"/>
                 </DataTrigger>
             </Style.Triggers>
         </Style>
     </dxe:ComboBoxEdit.Style>
</dxe:ComboBoxEdit>

编辑:如果您使用隐式主题,则定义的样式必须从主题样式继承:

<dxe:ComboBoxEdit Name="siteComboBox" HorizontalAlignment="Left" Margin="97,104,0,0" 
     VerticalAlignment="Top" Width="150" ItemsSource="{Binding Site}" 
     SelectedItem="{Binding SelectedSite}"/>
<dxe:ComboBoxEdit Name="planTypeComboBox" HorizontalAlignment="Left" Margin="97,159,0,0" 
     VerticalAlignment="Top" Width="150" 
     ItemsSource="{Binding PlanType}" SelectedItem="{Binding SelectedPlanType}">
     <dxe:ComboBoxEdit.Style>
         <Style TargetType="{x:Type dxe:ComboBoxEdit}" BasedOn="{StaticResource {x:Type dxe:ComboBoxEdit}}">
             <Setter Property="IsEnabled" Value="True"/>
             <Style.Triggers>
                 <DataTrigger Binding="{Binding ElementName=siteComboBox, Path=SelectedItem}" Value="{x:Null}">
                     <Setter Property="IsEnabled" Value="False"/>
                 </DataTrigger>
             </Style.Triggers>
         </Style>
     </dxe:ComboBoxEdit.Style>
</dxe:ComboBoxEdit>

答案 1 :(得分:1)

ComboBox没有IsChecked属性。所以绑定不起作用。

您可以设置另一个属性IsSiteSelected,当SelectedSite不为空时返回true并改为绑定到该属性。

答案 2 :(得分:0)

对于第二个组合框,当第一个组合框的SelectedIndex不为-1时设置IsEnabled 或者为第一个组合框定义SelectionChanged事件并在后端启用/禁用第二个组合框