所以我有一个我想要绑定的类:
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分别取决于哪些radiobutton缺血。
类中的逻辑在技术上并不像我在GUI上那样区分A和B.因此,如果OptionA1 == True且OptionB1 == True,则类将按预期执行OptionA1和B1的行为。
但是,我希望将A组和B组显示为exclusive-or:意味着如果OptionA1或OptionA2设置为true,则OptionB1和OptionB2都必须为false。反之亦然。
以下绑定将根据检查的radiobutton / group自动重新调整/重新绑定复选框,但不会强制执行组之间的异或关系。因此,用户可以单击RadioButtonA并选中这两个框。如果用户然后单击RadioButtonB,则OptionA1和OptionA2仍设置为true(如预期的那样)。当RadioButtonB缺血时,如何自动将它们设置为假?
<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>
答案 0 :(得分:2)
我认为你不能在直接的XAML中做到这一点。您将不得不在代码隐藏/ viewmodel中编写代码或编写处理它的自定义IValueConverter(可能是MultiConverter?)。无论哪种方式,它的一些代码。