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

标签 wpf xaml checkbox triggers

我有两个 GroupBox,它们使用 CheckBox 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 也将被取消选中。我的触发器出了什么问题?

最佳答案

当触发条件满足时,触发系统将应用一个setter。当不再满足触发条件时,所有触发器的 setter 都将恢复为原始值。这告诉您不能使用触发器来实现此目的。完成此操作的最佳方法是从 Checked 事件处理程序中的代码进行设置。

关于wpf - 触发器适用于 IsEnabled,但不适用于 CheckBox 中的 IsChecked,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19731024/

相关文章:

wpf - 多语言 WPF 应用程序的方法

c# - 绑定(bind)到自定义控件的一部分中的事件

WPF ComboBox ItemTemplate 绑定(bind)到字符串集合

angularjs - 如何以编程方式取消选中复选框?

php - 单击复选框后,jquery/ajax/php 将数据加载到文本字段中

c# - 无法将 ObservableCollection 绑定(bind)到 DataGrid

c# - 所有文本完全丢失或呈现为方框

wpf - DataGrid RowStyle - DataTrigger 中的绑定(bind)值

android - 如何在 ListView 多选中将位置设置为复选框

wpf - 有没有办法在页面上覆盖 WPF 中的 OnNavigatedTo?