无法在MVVM Light Toolkit的RelayCommand中将单个参数传递给lambda函数

时间:2010-06-07 03:50:41

标签: wpf mvvm-light relaycommand

我不知道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<>。

我到底在这里错过了什么?

1 个答案:

答案 0 :(得分:7)

RelayCommand的非泛型实现(在MVVM Light中)不接受参数。请改为使用RelayCommand<Object>或(更好)RelayCommand<YourCustomType>,以便强烈输入SomeFunc的参数。