如何传递多个参数 RelayCommand? [复制]

Posted

技术标签:

【中文标题】如何传递多个参数 RelayCommand? [复制]【英文标题】:How to Passing multiple parameters RelayCommand? [duplicate] 【发布时间】:2012-01-06 23:08:16 【问题描述】:

可能重复:Passing two command parameters using a WPF binding

我需要向我的 RelayCommand 发送两个参数,例如:

public RelayCommand<String,Int> MyCommand get;set; Or
public RelayCommand<EventArgument,String> MyCommand get;set;

【问题讨论】:

【参考方案1】:

您可以使用不同的模型类来传递多个参数。为了初始化它们,您可以像这样使用 xaml 元素:

<Button Command="Binding YourCommand">
   <Button.CommandParameter>
      <YourNS:YourModel Id="Binding PathForId" Name="Binding PathForName"/>
   </Button.CommandParameter>
</Button>

这将构造一个新的 YourModel 对象以传递给命令,然后将通过绑定初始化其属性。

【讨论】:

实际上这在 Silverlight 中并没有为我解决。相反,我使用了本文中提到的自定义多绑定类:codeproject.com/Articles/286171/MultiBinding-in-Silverlight-5 - 不需要转换器,您只需将对象转换为对象[]。【参考方案2】:

将它们包装在一个对象中:

public RelayCommand<MyModel> MyCommand  get; set; 

其中 MyModel 将包含两个属性:

public class MyModel

    public int Id  get; set; 
    public string Name  get; set; 

【讨论】:

事实上我想发送到我的命令:RelayCommand @mtaboy,RelayCommand的定义方式,只有一种可以传。因此,如果您想要多种类型,则必须将它们包装到一个单独的模型中,如我的回答所示。 如何将 xaml 代码中的 Id 和 Name 设置为 MyModel ? @mtaboy,您的主视图模型可能具有这种类型的属性。然后您可以使用具有正确绑定语法的 CommandParameter。 你是对的..但是,如何在 Xaml 代码中设置 Name 和 Id 属性?

以上是关于如何传递多个参数 RelayCommand? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

WPF Multibinding - 需要使用 Relaycommand

如何将 RelayCommand 与 MVVM Light 框架一起使用

WPF MvvmLight RelayCommand 绑定Command 的使用

MVVM RelayCommand可以执行

(1) 如何向线程对应的函数传递参数?一个参数如何传递,多个参数如何传递? (2) 深入理解线程与进程的

中 resolve 如何传递多个参数