如何在wpf中使用RelayCommand

最佳答案

中继命令在WPF中不存在,它只是在this MSDN article中定义后提升为突出的外部类。如果要使用它,则需要自己编写。

否则,您可以从WPF工具包here中获得Delegate命令,该命令在RelayCommand代码上具有一些额外的功能。

嗯,当我输入此答案时,问题就改变了。假设您使用的是上面定义的RelayCommand,则需要为其提供一个或两个委托(delegate),一个委托(delegate)返回一个 bool 值,用于确定命令是否处于有效状态,而第二个委托(delegate)则不返回任何值并实际运行命令。如果不提供“CanRun”委托(delegate),则该命令将认为它始终处于有效状态。本文中使用的代码:

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

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

关于c# - 如何在wpf中使用RelayCommand?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/862570/

10-12 00:29
查看更多