0

所以,我在这里想要实现的是使用相同的命令来执行一些不同类型的代码。我想区分要执行的代码的方式可以使用命令参数来完成。当我必须使用 RelayCommand 时,我只是不知道如何以我想要的方式做到这一点。

这意味着,我有 2 个不同的按钮,它们都使用相同的命令,只是使用不同的命令参数。

到目前为止,这是我的 XAML:

<RibbonButton SmallImageSource="../Images/whatever.png" Label="Attribute" Command="{Binding AddItemToNodeCommand}" CommandParameter="Attribute"/>

<RibbonButton SmallImageSource="../Images/whatever.png" Label="Method" Command="{Binding AddItemToNodeCommand}" CommandParameter="Method" />

这就是我的 ViewModel 中的内容:

public ICommand AddItemToNodeCommand { get; private set; }

而且当然:

AddItemToNodeCommand = new RelayCommand(AddItemToNode);

有什么方法可以在调用relayCommand 时使用该命令参数?

如果您需要更多信息或代码,请询问。

4

1 回答 1

2

您可以使用 lambda 表达式让您访问CommandParameter... 试试这个:

AddItemToNodeCommand = new RelayCommand(parameter => AddItemToNode(parameter));

请注意(与所有 lambda 表达式一样)parameter这里的名称可以是任何东西......这将是一样的:

AddItemToNodeCommand = new RelayCommand(p => AddItemToNode(p));

这是因为我们只是在=>.


更新>>>

你试过这样吗?:

AddItemToNodeCommand = new RelayCommand<object>(parameter => AddItemToNode(parameter));

最后一个选项只是以与您开始时相同的方式调用它:

AddItemToNodeCommand = new RelayCommand(AddItemToNode);
于 2013-10-24T18:13:26.477 回答