如何 RelayCommand
在 wpf 中使用?
2 回答
中继命令在 WPF 中不存在,它只是一个外部类,在此 MSDN 文章中定义后引起了人们的注意。如果你想使用它,你需要自己编写它。
否则,您可以在此处使用 WPF 工具包中的 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() 方法。
作为RelayCommand
为所有方法创建包装器的替代方法,我可以建议一个免费的库和源代码,以允许您使用绑定{BindTo Save()}
。我创建它是为了简化我的绑定。它还使相对绑定更容易。你可以在这里找到它:http ://www.simplygoodcode.com/2012/08/simpler-wpf-binding.html