我是WPF的新手,我不知道为什么来自viewmodel的绑定不会执行指定的命令。
<CheckBox x:Name="CheckBoxName" Content="MyCheckBox" IsChecked="{Binding Restrictions.MyCheckBox}" Command="{Binding MyCommand}" CommandParameter="{Binding ElementName=CheckBoxName}"/>
当我选中视图中的复选框时,MyCommand按预期执行,但是当我使用绑定从viewmodel设置IsChecked属性时,不执行该命令。
有没有人知道为什么会这样?如何使用绑定从viewmodel执行命令?
非常感谢你!
答案 0 :(得分:0)
据我所知,Command在基本“ButtonBase”类的“Click”事件上执行,如果通过Binding更改IsChecked属性,则不会触发该事件。 一种解决方案是将触发器附加到Checked和Unchecked事件,这会触发您的命令。
首先,您需要添加命名空间
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
并为您的复选框
<CheckBox x:Name="CheckBoxName"
Content="MyCheckBox"
IsChecked="{Binding Restrictions.MyCheckBox}"
Command="{Binding MyCommand}"
CommandParameter="{Binding ElementName=CheckBoxName}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<i:InvokeCommandAction Command="{Binding MyCommand}" CommandParameter="{Binding Path=IsChecked, ElementName=CheckBoxName}" />
</i:EventTrigger>
<i:EventTrigger EventName="Unchecked">
<i:InvokeCommandAction Command="{Binding MyCommand}" CommandParameter="{Binding Path=IsChecked, ElementName=CheckBoxName}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Checkbox>