我有两个 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/