2012-09-30 87 views
1

我在WPF很早起步。 我有checkBox,我希望每次检查更改都会优先执行一个获取IsChecked参数的命令并执行一些操作。通过WPF处理命令参数MVVM

我有下面的代码在我的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... 
    } 

但对于“做财产以后”我需要器isChecked参数,我怎样才能得到它?

感谢

回答

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> 
1

在您的视图模型RelayCommand样子

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

并在您的视图模型构造的代码看起来像

AddSelectedItemsCommand=new RelayCommand<string>(AddSelectedItemsMethod); 


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