C# viewmodel更改时未执行WPF命令
我是WPF新手,不知道为什么来自viewmodel的绑定不执行指定的命令C# viewmodel更改时未执行WPF命令,c#,wpf,mvvm,C#,Wpf,Mvvm,我是WPF新手,不知道为什么来自viewmodel的绑定不执行指定的命令 <CheckBox x:Name="CheckBoxName" Content="MyCheckBox" IsChecked="{Binding Restrictions.MyCheckBox}" Command="{Binding MyCommand}" CommandParameter="{Binding ElementName=CheckBoxName}"/> 当我选中视图中的复选框时,MyCom
<CheckBox x:Name="CheckBoxName" Content="MyCheckBox" IsChecked="{Binding Restrictions.MyCheckBox}" Command="{Binding MyCommand}" CommandParameter="{Binding ElementName=CheckBoxName}"/>
当我选中视图中的复选框时,MyCommand会按预期执行,但当我使用绑定从viewmodel设置IsChecked属性时,该命令不会执行
有人知道为什么会这样吗?如何使用绑定从viewmodel执行命令
非常感谢 据我所知,该命令是在基本“ButtonBase”类的“Click”事件上执行的,如果通过绑定更改IsChecked属性,则不会触发该事件。 一种解决方案是将触发器附加到已检查和未检查事件,从而触发您的命令 首先,您需要添加名称空间
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>
一些注释,使绑定双向,检查您是否正确实现了NotifyPropertyChanged
,并将UpdateSourceTrigger=PropertyChanged
添加到绑定中,然后重新测试它是否有效。可能不相关,但您能否尝试在IsChecked绑定中设置Mode=TwoWay
?使用CommandParameter=“{binding IsChecked,RelativeSource=”={RelativeSource Self}“
和名称
此时不需要。默认情况下,复选框
使用双向绑定
。