通过WPF MVVM处理CommandParameter

时间:2012-09-30 07:14:29

标签: wpf mvvm commandparameter

我在WPF很开心。 我有checkBox,我希望每次检查更改都会超出获取IsChecked参数并执行某些操作的命令。

我的XAML文件中有下一个代码:                         

在我的viewModel中,我有下一个代码:

    private ICommand _addSelectedItemsCommand;
    public ICommand AddSelectedItemsCommand
    {
        get
        {
            if (_addSelectedItemsCommand == null)
            {
                _addSelectedItemsCommand = new RelayCommand(param => this.AddSelectedItems());
            }
            return _addSelectedItemsCommand;
        }
    }


    private void AddSelectedItems()
    {
        Do something...
    }

但是对于“Do somthing”我需要IsChecked参数,我怎么能得到它?

由于

2 个答案:

答案 0 :(得分:1)

在您的ViewModel RelayCommand中看起来像

private RelayCommand<string> AddSelectedItemsCommand{get;set;}

在您的ViewModel构造函数代码中看起来像

AddSelectedItemsCommand=new RelayCommand<string>(AddSelectedItemsMethod);


void AddSelectedItemsMethod(string AddItem)
{
 Your Code Goes Here.
  }

答案 1 :(得分:0)

您应该使用InvokeCommandAction课程。您可以在Expression Blend SDK中找到它,或者只需将this NuGet package添加到项目中即可。

<CheckBox
  xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
  xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity">
  <i:Interaction.Triggers>
    <i:EventTrigger EventName="Checked">
      <ei:InvokeCommandAction Command="{Binding AddSelectedItemsCommand}" CommandParameter="..." />
    </i:EventTrigger>
  </i:Interaction.Triggers>
</CheckBox>