我正在学习WPF中的MVVM。
如果没有该命令获取对象参数,我将如何将命令绑定到控件?我目前正在使用RelayCommand方法,这将不允许我在没有object参数的情况下传递Method / Action,如RelayCommand类中的Action签名所指定的那样。
所以我的问题是,如果我想在不采用任何参数的情况下实现命令,我的方法是什么?
答案 0 :(得分:0)
我自己不使用RelayCommand
,更喜欢使用我自己的实现,但我认为它们足以让我能够回答你的问题:
public ICommand ActivateCommand
{
get { return new RelayCommand(action => Activate(), canExecute => CanActivate()); }
}
此处,CommandParameter
由action
和canExecute
输入参数表示。你必须在这里声明它们,但你没有有来使用它们,如上所示。显然,与所有lambda表达式一样,您可以按照自己喜欢的方式调用它们。
答案 1 :(得分:0)
您可以使用Microsoft Prism库中包含的DelegateCommand
。
此命令允许您定义所需的任何参数类型。
例如
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;}
希望,这有帮助。