我正在WPF中学习MVVM。
如果该命令不带对象参数,我将如何将命令绑定到控件?我目前正在使用 RelayCommand 方法,这将不允许我传递没有对象参数的方法/动作,正如 RelayCommand 类中的动作签名所指定的那样。
所以我的问题是,如果我想在不带任何参数的情况下执行命令,我的方法是什么?
我不使用RelayCommand
自己,更喜欢使用我自己的实现,但我认为它们足够相似,我能够回答你的问题:
public ICommand ActivateCommand
{
get { return new RelayCommand(action => Activate(), canExecute => CanActivate()); }
}
在这里,CommandParameter
由action
和canExecute
输入参数表示。您必须在此处声明它们,但您不必使用它们,如上所示。显然,与所有 lambda 表达式一样,您可以随意称呼它们。
您可以使用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;}
希望能帮助到你。