如何在wpf中使用RelayCommand?

时间:2009-05-14 10:16:18

标签: c# wpf relaycommand

如何在wpf中使用RelayCommand

2 个答案:

答案 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