如何在wpf中使用RelayCommand
?
答案 0 :(得分:50)
WPF中不存在中继命令,它只是在this MSDN article中定义后突出显示的外部类。如果你想使用它,你需要自己编写。
否则,您可以使用WPF工具包here中的Delegate命令,该命令在RelayCommand代码上有一些额外的功能。
啊,当我输入这个答案时,问题发生了变化。假设您正在使用上面定义的RelayCommand,您需要为它提供一个或两个委托,一个返回bool,用于确定命令是否处于有效状态以运行,第二个返回什么并且实际运行命令。如果您不提供“CanRun”委托,则该命令将认为它始终处于有效状态。文章中使用的代码:
RelayCommand _saveCommand;
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new RelayCommand(param => this.Save(),
param => this.CanSave );
}
return _saveCommand;
}
}
声明一个RelayCommand,它将在触发时调用Save()方法,并返回CanSave属性作为有效性测试。当此命令绑定到WPF中的按钮时,Button的IsEnabled属性将匹配ViewModel的CanSave属性,并且当单击该按钮时(假设它已启用),将在ViewModel上调用Save()方法。
答案 1 :(得分:7)
作为为所有方法创建RelayCommand
包装器的替代方法,我可以建议一个允许您使用绑定{BindTo Save()}
的免费库和源代码。我创建它来简化我的绑定。它还使相对绑定更容易。您可以在此处找到它:http://www.simplygoodcode.com/2012/08/simpler-wpf-binding.html