通过WPF MVVM处理CommandParameter
-
11-12-2019 - |
题
我在WPF的比较人员。 我有复选框,我希望每一个检查更改都会摘断一个命令,该命令得到了ischecked参数并执行一些操作。
我在XAML文件中有下一个代码:
在我的视图中,我有下一个代码:
private ICommand _addSelectedItemsCommand;
public ICommand AddSelectedItemsCommand
{
get
{
if (_addSelectedItemsCommand == null)
{
_addSelectedItemsCommand = new RelayCommand(param => this.AddSelectedItems());
}
return _addSelectedItemsCommand;
}
}
private void AddSelectedItems()
{
Do something...
}
.
但是对于“做点动”我需要ischecked参数,我怎样才能得到它?
感谢
解决方案
你应该使用 invokecommandaction 类。您可以在表达式Blend SDK中找到它,或者您可以简单地添加此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>
. 其他提示
在ViewModel Relaycommand看起来像
private RelayCommand<string> AddSelectedItemsCommand{get;set;}
.
和在您的视图中,构造函数代码看起来像
AddSelectedItemsCommand=new RelayCommand<string>(AddSelectedItemsMethod);
void AddSelectedItemsMethod(string AddItem)
{
Your Code Goes Here.
}
. 不隶属于 StackOverflow