触发器适用于IsEnabled但不适用于CheckBox中的IsChecked

时间:2013-11-01 16:29:15

标签: wpf xaml checkbox triggers

我有两个GroupBox,它们使用CheckBoxes A和B作为标题。我想要的是当检查B时,我也要检查A。仅在未选中B时启用A.我有以下代码:

<GroupBox>
            <GroupBox.Header>
                <CheckBox Name="A">
                    <CheckBox.Style>
                        <Style TargetType="{x:Type CheckBox}">
                            <Setter Property="IsEnabled" Value="False" />
                            <Style.Triggers>
                                <MultiDataTrigger>
                                    <MultiDataTrigger.Conditions>
                                        <Condition Binding="{Binding ElementName=B, Path=IsChecked}" Value="True" />
                                    </MultiDataTrigger.Conditions>
                                    <Setter Property="IsEnabled" Value="False" />
                                    <Setter Property="IsChecked" Value="True" />
                                </MultiDataTrigger>
                                <MultiDataTrigger>
                                    <MultiDataTrigger.Conditions>
                                        <Condition Binding="{Binding ElementName=B, Path=IsChecked}" Value="False" />
                                    </MultiDataTrigger.Conditions>
                                    <Setter Property="IsEnabled" Value="True" />
                                </MultiDataTrigger>
                            </Style.Triggers>
                        </Style>
                    </CheckBox.Style>
                    Check Box A
                </CheckBox>
            </GroupBox.Header>
        </GroupBox>
        <GroupBox>
            <GroupBox.Header>
                <CheckBox Name="B">
                    Check Box B
                </CheckBox>
            </GroupBox.Header>
        </GroupBox>

我遇到的问题是当我取消选中复选框B时,复选框A也将被取消选中。我的触发器出了什么问题?

1 个答案:

答案 0 :(得分:2)

触发系统将在满足触发条件时应用设定器。当不再满足触发条件时,所有触发器的设置器都将恢复为原始值。这告诉您不能为此目的使用触发器。实现此目的的最佳方法是从Checked eventhandler。

中的代码设置它