我该如何在WPF中使用RelayCommand
?
在WPF中并不存在RelayCommand,它只是一个外部类,在这篇MSDN文章被定义后才得到了广泛关注。如果想要使用它,您需要自己编写代码。
否则,您可以使用WPF工具包中的DelegateCommand,它比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中将此命令绑定到按钮时,按钮的IsEnabled属性将与ViewModel的CanSave属性匹配,并且当按钮被点击(假设它已启用)时,ViewModel上的Save()方法将被调用。
RelayCommand
包装器的替代方案,我建议使用一个免费的库和源代码 {BindTo Save()}
,它可以让你使用绑定。我创建了这个库来简化我的绑定过程,同时也使相对绑定更加容易。你可以在这里找到它: http://www.simplygoodcode.com/2012/08/simpler-wpf-binding.html。