我不知道Josh Smith和Laurent Bugnion的RelayCommand的实现是否存在差异,但在我看过的任何地方,听起来像RelayCommand的Execute部分可以带0或1个参数。我只能用它来工作。当我尝试类似的东西时:
public class Test
{
public RelayCommand MyCommand { get; set; }
public Test()
{
MyCommand = new RelayCommand((param) => SomeFunc(param));
}
private void SomeFunc( object param)
{
}
}
我收到错误:Delegate 'System.Action' does not take '1' arguments
。为了确保我不是疯了,我去了RelayCommand的定义,以确保我的解决方案中没有一些流氓实现,但果然,它只是Action,而不是Action<>。
我到底在这里错过了什么?
答案 0 :(得分:7)
RelayCommand
的非泛型实现(在MVVM Light中)不接受参数。请改为使用RelayCommand<Object>
或(更好)RelayCommand<YourCustomType>
,以便强烈输入SomeFunc
的参数。