如何在wpf中使用RelayCommand?

如何在wpf中使用RelayCommand

中继命令在WPF中不存在,它只是一个外部类,在MSDN文章中定义之后才引起注意。 如果你想使用它,你需要自己写。

否则,您可以使用WPF工具包中的Delegate命令,它在RelayCommand代码上具有一点额外的function。


啊,当我input这个答案的时候,问题就改变了。 假设你正在使用上面定义的RelayCommand,你需要给它提供一个或两个委托,一个返回一个布尔值,它确定命令是否处于有效状态下运行,而另一个什么也不返回,实际上运行命令。 如果您没有提供“CanRun”委托,那么该命令将认为它始终处于有效状态。 在文章中使用的代码:

 RelayCommand _saveCommand; public ICommand SaveCommand { get { if (_saveCommand == null) { _saveCommand = new RelayCommand(param => this.Save(), param => this.CanSave ); } return _saveCommand; } } 

声明一个RelayCommand,它将在触发时调用Save()方法,并返回CanSave属性作为有效性testing。 当此命令绑定到WPF中的button时,Button的IsEnabled属性将与ViewModel的CanSave属性相匹配,并且单击此button(假定启用时)将在ViewModel上调用Save()方法。

作为为所有方法创buildRelayCommand包装的替代方法,我可以build议一个免费的库和源代码,以便使用绑定{BindTo Save()} 。 我创build它来简化我的绑定。 这也使相对绑定更容易。 你可以在这里find它: http : //www.simplygoodcode.com/2012/08/simpler-wpf-binding.html