如何解决绑定到XAML中的两个布尔属性时处理异或条件
|| 所以我想绑定一个类:public class Awesome {
public bool OptionA1 { get; set; }
public bool OptionA2 { get; set; }
public bool OptionB1 { get; set; }
public bool OptionB2 { get; set; }
}
当我在GUI中公开该类时,我有两个单选按钮(称为radioButtonA和radioButtonB),它们使用户可以在组A和B之间进行选择,并且有两个复选框可以使用户分别根据需要更改A1 / A2和B1 / B2选中了哪个单选按钮。
该类中的逻辑在技术上不会像我在GUI上一样区分A和B。因此,如果OptionA1 == True和OptionB1 == True,则该类将按预期执行OptionA1和B1的行为。
但是,我要将组A和B公开为“异或”:这意味着,如果OptionA1或OptionA2设置为true,则OptionB1和OptionB2都必须为false。反之亦然。
以下绑定将根据选中了哪个单选按钮/组来自动重新使用/重新绑定复选框,但不会强制组之间的异或关系。因此,用户可以单击RadioButtonA并选中两个框。如果用户然后单击RadioButtonB,则OptionA1和OptionA2仍设置为true(按预期)。选中RadioButtonB时,如何自动将它们设置为false?
<CheckBox Content=\"Do Option 1\">
<CheckBox.Style>
<Style targettype=\"CheckBox\">
<Style.Triggers>
<DataTrigger Binding=\"{Binding ElementName=radioButtonA,Path=IsChecked}\" Value=\"True\">
<Setter Property=\"IsChecked\">
<Setter.Value>
<Binding Path=\"OptionA1\" Mode=\"TwoWay\"/>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding=\"{Binding ElementName=radioButtonB,Path=IsChecked}\" Value=\"True\">
<Setter Property=\"IsChecked\">
<Setter.Value>
<Binding Path=\"OptionB1\" Mode=\"TwoWay\"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
</CheckBox>
解决方法
我认为您将无法在直接XAML中做到这一点。您将不得不在代码隐藏/视图模型中编写代码,或者编写一个处理它的自定义IValueConverter(也许是MultiConverter?)。无论哪种方式,它都有一些代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。