用均匀触发器改变复选框的状态

本文关键字:复选框 状态 改变 触发器 | 更新日期: 2023-09-27 17:52:45

我有这个CheckBox:

<CheckBox x:Name="checkNotAppointed" Grid.Column="1" Grid.Row="2" Content="Not Appointed" >
    <CheckBox.Style>
        <Style TargetType="{x:Type CheckBox}">
            <Setter Property="Margin" Value="2" />
            <Setter Property="IsEnabled" Value="True" />
            <Setter Property="IsChecked" Value="{Binding FilterForNotAppointed, UpdateSourceTrigger=PropertyChanged}" />
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding IsChecked, ElementName=checkElder}" Value="True" />
                        <Condition Binding="{Binding IsChecked, ElementName=checkMinisterialServant}" Value="False" />
                    </MultiDataTrigger.Conditions>
                    <Setter Property="IsEnabled" Value="True" />
                </MultiDataTrigger>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding IsChecked, ElementName=checkElder}" Value="False" />
                        <Condition Binding="{Binding IsChecked, ElementName=checkMinisterialServant}" Value="True" />
                    </MultiDataTrigger.Conditions>
                    <Setter Property="IsEnabled" Value="True" />
                </MultiDataTrigger>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding IsChecked, ElementName=checkElder}" Value="False" />
                        <Condition Binding="{Binding IsChecked, ElementName=checkMinisterialServant}" Value="False" />
                    </MultiDataTrigger.Conditions>
                    <Setter Property="IsChecked" Value="True" />
                    <Setter Property="IsEnabled" Value="False" />
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </CheckBox.Style>
</CheckBox>

如果我不选中checkEldercheckMinisterialServant,它对checkNotAppointed没有影响。正确的。

如果我然后取消选中他们,它检查checkNotAppointed和禁用。正确的。

如果我然后选中其他两个中的一个,它启用checkNotAppointed,但总是取消选中它。为什么?

用均匀触发器改变复选框的状态

在你的Setter的Binding中有一个缺失的部分(IsChecked),它应该是:

  <Setter Property="IsChecked" Value="{Binding IsChecked, ElementName=FilterForNotAppointed}"/>

根据你的评论,FilterForNotAppointed是另一个组合框,所以你可以通过添加这些来检查它:

<StackPanel Orientation="Horizontal">
        <Label Content="FilterForNotAppointed' IsChecked:"/>
        <TextBlock VerticalAlignment="Center" Text="{Binding IsChecked, ElementName=FilterForNotAppointed}"/>
 </StackPanel>
 <StackPanel Orientation="Horizontal">
        <Label Content="checkNotAppointed's IsChecked:"/>
        <TextBlock VerticalAlignment="Center" Text="{Binding IsChecked, ElementName=checkNotAppointed}"/>
 </StackPanel>