当`SelectedIndex`大于0时触发

时间:2011-06-08 14:33:16

标签: wpf xaml triggers selection mutual-exclusion

如何在ComboBox上设置一个触发器,当SelectedIndex大于0时(基本上,当选择一个选项时)另一个ComboBox被修改。我有两个ComboBox es但用户只能从其中一个中选择。因此,如果我从ComboBox A中选择第一个选项,那么ComboBox B应该得到SelectedIndex 0,反之亦然。

我尝试过以下操作,但不确定如何捕获所需的逻辑。

<ComboBox ItemsSource="{Binding AvailableStatuses}"
          SelectedItem="{Binding SelectedStatus}"
          Grid.Row="1" Grid.Column="1" DisplayMemberPath="Name" 
          x:Name="Statuses">
    <ComboBox.Style>
        <Style TargetType="{x:Type ComboBox}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=Decisions}" Value="0">
                    <Setter Property="SelectedIndex" Value="0" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ComboBox.Style>
</ComboBox>

我应该看一下什么样的触发器?

3 个答案:

答案 0 :(得分:3)

我认为只要你的“SelectedStatus”属性在ViewModel中拥有这个逻辑就会简单得多。如果进入的值大于0,则将另一个属性(“SelectedStatus2”?)设置为0,反之亦然。

答案 1 :(得分:1)

为什么不将SelectedIndex B的ComboBox属性绑定到SelectedIndex A的ComboBox属性?

答案 2 :(得分:1)

如果SelectedIndex大于0

,您可以编写一个返回True / False的转换器
<DataTrigger Binding="{Binding ElementName=Decisions, 
    Converter={StaticResource IsValueGreaterThanZeroConverter}}" Value="True">