【问题标题】:Can't pass a single parameter to lambda function in MVVM Light Toolkit's RelayCommand无法将单个参数传递给 MVVM Light Toolkit 的 RelayCommand 中的 lambda 函数
【发布时间】:2010-06-07 03:50:40
【问题描述】:

我不知道 Josh Smith 和 Laurent Bugnion 的 RelayCommand 实现之间是否存在差异,但在我看过的所有地方,听起来 RelayCommand 的 Execute 部分可以采用 0 或 1 个参数。我只能让它与 0 一起工作。当我尝试类似的东西时:

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。

我到底错过了什么?

【问题讨论】:

标签: wpf mvvm-light relaycommand


【解决方案1】:

RelayCommand(在 MVVM Light 中)的非泛型实现不接受参数。请改用RelayCommand<Object>,或者(甚至更好)RelayCommand<YourCustomType>,这样SomeFunc 的参数是强类型的。

【讨论】:

  • 谢谢,Matt,我终于还在一个有点相关的帖子上找到了该信息(拍了拍额头)——stackoverflow.com/questions/2306063/…。我打算删除我的问题,但你的回答太快了。 :) 只要系统允许,我就会接受!谢谢。
  • 我会投票关闭这个作为副本。我们将看看哪个先发生。 :)
  • 嘻嘻。在某种程度上,我们都赢了! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 2011-08-03
  • 1970-01-01
  • 2015-01-20
  • 1970-01-01
  • 2018-12-25
相关资源
最近更新 更多