<CheckBox x:Name="cb1" IsChecked="{Binding cb1Enabled}"/>
<CheckBox x:Name="cb2" IsEnabled="{Binding ElementName=cb1, Path=IsChecked}" IsChecked="{Binding cb2Enabled}">
我有两个CheckBoxes cb1和cb2。两者都绑定2个bool。 cb1Enabled和cb2Enabled。 如您所见,只有在选中cb1并且它的IsChecked属性绑定到特定的bool依赖属性时才会启用cb2。
一切都很好但是我想在取消选中cb1时取消选中cb2,因此,将cb2Enabled设置为false。有没有办法实现这个目标?
所以我想我可以说我希望cb2的IsChecked属性绑定到cb1的isChecked属性以及cb2Enabled dp。
答案 0 :(得分:1)
这可能最好在视图模型中完成。使用双向绑定:
<CheckBox x:Name="cb1" IsChecked="{Binding cb1Enabled,Mode=TwoWay}"/>
然后,在“cb1Enabled”的setter中设置“cb2Enabled”属性。例如:
public bool cb1Enabled
{
get { return bool _cb1Enabled; }
set
{
_cb1Enabled = value;
if (!_cb1Enabled)
cb2Enabled = false;
RaisePropertyChanged();
}
}
private bool _cb1Enabled;
如果您不喜欢上述内容,则仅限XAML的替代方法是使用Unchecked
ChangePropertyAction
上的事件触发器:
<CheckBox x:Name="cb1" IsChecked="{Binding cb1Enabled}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Unchecked">
<ei:ChangePropertyAction TargetObject="{Binding}" PropertyName="cb2Enabled"
Value="False"
/>
</i:EventTrigger EventName="Unchecked">
</i:Interaction.Triggers>
</CheckBox>