0

我正在WPF中学习MVVM。

如果该命令不带对象参数,我将如何将命令绑定到控件?我目前正在使用 RelayCommand 方法,这将不允许我传递没有对象参数的方法/动作,正如 RelayCommand 类中的动作签名所指定的那样。

所以我的问题是,如果我想在不带任何参数的情况下执行命令,我的方法是什么?

4

2 回答 2

0

我不使用RelayCommand自己,更喜欢使用我自己的实现,但我认为它们足够相似,我能够回答你的问题:

public ICommand ActivateCommand
{
    get { return new RelayCommand(action => Activate(), canExecute => CanActivate()); }
}

在这里,CommandParameteractioncanExecute输入参数表示。您必须在此处声明它们,但您不必使用它们,如上所示。显然,与所有 lambda 表达式一样,您可以随意称呼它们。

于 2013-10-01T14:55:20.590 回答
0

您可以使用DelegateCommand包含在Microsoft Prism库中的一个。

此命令允许您定义所需的任何参数类型。

例如

ICommand MyCommand = new DelegateCommand<AnyType>(Execute, CanExecute);

private void Execute(AnyType e) {} private bool CanExecute(AnyType e) { return true; }

或者,您需要的示例:

ICommand MyCommand = new DelegateCommand(Execute, CanExecute);

private void Execute() {} private bool CanExecute() {return true;}

希望能帮助到你。

于 2013-10-01T14:58:58.573 回答