2010-06-07 35 views
3

我不知道Josh Smith和Laurent Bugnion的RelayCommand实现是否有区别,但是在我看过的任何地方,听起来像是RelayCommand的执行部分可以取0或1个参数。我只能够得到它用0到工作时,我尝试类似:无法将单个参数传递给MVVM Light Toolkit的RelayCommand中的lambda函数

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

可能重复[CanExecute on RelayCommand not working](http://stackoverflow.com/questions/2306063/canexecute-on-relaycommandt-not-working) – 2010-06-07 04:07:03

回答

7

RelayCommand(在MVVM Light中)的非通用实现不接受参数。改为使用RelayCommand<Object>,或(更好)RelayCommand<YourCustomType>,因此SomeFunc的参数是强类型的。

+0

谢谢,马特,我*最后*还发现信息在一个有点相关的职位(拍额头) - http://stackoverflow.com/questions/2306063/canexecute-on-relaycommandt-not-working。我想删除我的问题,但你的答案太快了。 :)只要系统允许,我会尽快接受!谢谢。 – Dave 2010-06-07 04:01:17

+0

我会投票将其作为副本关闭。我们先看看会发生什么。 :) – 2010-06-07 04:06:39

+0

我想我赢了?哈哈 – Dave 2010-06-07 04:10:40

相关问题