XAML:
<RadioButton x:Name="RadioButtonA">
<RadioButton.Style>
<Style TargetType="RadioButton">
<Setter Property="IsChecked" Value="{Binding Path=RadioAValue}" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=CheckBoxA, Path=IsChecked}" Value="True">
<Setter Property="IsChecked" Value="True"/>
</DataTrigger>
</Style.Triggers>
</Style>
</RadioButton.Style>
</RadioButton>
C#代码背后
public bool RadioAValue
{
get
{
...
}
set
{
...
}
}
选中RadioAvalue
时,不会调用 CheckBoxA
的设置部分。
有什么理由吗?
答案 0 :(得分:1)
如果你想让条件设定器使用MultiBinding,那么你现在就用已设置的值
来阻止绑定<Setter Property="IsChecked" Value="{Binding Path=RadioAValue}" />
必须是这样的(没有考虑过思考):
<RadioButton x:Name="YouRadioButton">
<RadioButton.Style>
<Style TargetType="RadioButton">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=CheckBoxA, Path=IsChecked}" Value="True"/>
<Condition Binding="{Binding RadioAValue}" Value="True"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="IsChecked" Value="True"/>
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<DataTrigger Binding="{Binding ElementName=CheckBoxA, Path=IsChecked}" Value="False">
<Setter Property="IsChecked" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</RadioButton.Style>
</RadioButton>
<CheckBox x:Name="CheckBoxA"/>
答案 1 :(得分:1)
您正在Style Setter
<Setter Property="IsChecked" Value="{Binding Path=RadioAValue}" />
点击checkbox
后,您已使用值Binding
覆盖False
。现在 元素上没有更多的绑定 ,它就不再调用该集了。
此外,如果您尝试将其绑定在RadioButton
本身而不是setters
上,这将取得更多优先权,并且您的Triggers
无法在那里工作。
我建议您对Command
进行Checkbox
绑定,并从ViewModel更新值RadioAValue