我正在尝试将checkbox checkchange事件绑定到命令 - MVVM 为什么这不起作用?或者在按钮上做同样的事情吗?
<CheckBox x:Name="radRefresh" IsChecked="{BindingREADY, Mode=TwoWay}" Command="{Binding Refresh_Command}" Content=" Refresh " Margin="10,25,0,0" />
<Button Command="{Binding Refresh_Command}" />
感谢
答案 0 :(得分:9)
您无需将其绑定到事件。 您需要做的就是将IsChecked绑定到布尔依赖属性,并在其setter上执行您想要的任何逻辑。
喜欢这个 -
<CheckBox x:Name="radRefresh" IsChecked="{Binding IsChecked, Mode=TwoWay}" Content=" Refresh " Margin="10,25,0,0" />
此xaml应该绑定到VM上的此属性
public bool IsChecked
{
get
{
return isChecked;
}
set
{
isChecked = value;
NotifyPropertChanged("IsChecked");
//Add any logic you'd like here
}
}
答案 1 :(得分:2)
这会有用......
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cmd:EventToCommand Command="{Binding Path=YourCommand,Mode=OneWay}" CommandParameter="{Binding IsChecked, ElementName=YourCheckBox}"></cmd:EventToCommand>
</i:EventTrigger>
</i:Interaction.Triggers>
我在哪里
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
为cmd添加命名空间
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4"
如果您正在使用MVVMLight框架,这是MVVM的首选方法之一。
答案 2 :(得分:0)
那是因为只有少数控件(我头顶的Button
,MenuItem
)实现了直接绑定命令的功能。
如果你需要绑定到一个控件,我建议创建一个UserControl
,当在代码隐藏中更改CheckBox的属性IsChecked
时,它会执行ViewModel的命令。
答案 3 :(得分:0)
这是一个简单的情况:
完成。