使用中继命令 WPF 将不同的命令参数传递给同一命令

本文关键字:命令 参数传递 一命 WPF | 更新日期: 2023-09-27 18:36:50

所以,我在这里试图实现的是使用相同的命令来执行一些不同类型的代码。我想区分要执行的代码的方法可以使用命令参数来完成。我只是不知道当我必须使用 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" />

这是我的视图模型中的内容:

public ICommand AddItemToNodeCommand { get; private set; }

当然还有:

AddItemToNodeCommand = new RelayCommand(AddItemToNode);

没有办法在调用 relayCommand 时使用该命令参数?

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

使用中继命令 WPF 将不同的命令参数传递给同一命令

您可以使用

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);