一尘不染

如何在wpf中使用RelayCommand?

c#

如何RelayCommand在WPF中使用 ?


阅读 993

收藏
2020-05-19

共1个答案

一尘不染

WPF中不存在Relay命令,它只是一个外部类,在MSDN文章中定义了它之后,它就引起了人们的关注。如果要使用它,则需要自己编写。

否则,你可以在你从WPF工具的委托指令在这里其中有超过RelayCommand代码额外的功能一点点。


嗯,当我输入此答案时,问题就改变了。假设您使用的是上面定义的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属性作为有效性测试。当此命令绑定到WPF中的按钮时,Button的IsEnabled属性将与ViewModel的CanSave属性匹配,并且当单击按钮(假定已启用)时,将在ViewModel上调用Save()方法。

2020-05-19