如何将命令绑定到CheckBox

时间:2012-02-15 12:18:36

标签: wpf checkbox mvvm

我正在尝试将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}" />

感谢

4 个答案:

答案 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)

那是因为只有少数控件(我头顶的ButtonMenuItem)实现了直接绑定命令的功能。

如果你需要绑定到一个控件,我建议创建一个UserControl,当在代码隐藏中更改CheckBox的属性IsChecked时,它会执行ViewModel的命令。

答案 3 :(得分:0)

这是一个简单的情况:

  1. 将CheckBox.IsChecked绑定到ViewModel中的布尔值。
  2. 在您的viewmodel中,订阅属性已更改事件并监视要更改的布尔值。
  3. 完成。