Передайте различные параметры команды одной и той же команде, используя RelayCommand WPF

Итак, чего я пытаюсь достичь - это использовать одну и ту же команду для выполнения какого-то другого вида кода. То, как я хочу отличить код, который я хочу выполнить, может быть сделано с помощью параметров команды. Я просто не понимаю, как я могу сделать это так, как я хочу, когда мне нужно использовать 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?

Если вам нужна дополнительная информация или код, просто спросите.

1 ответ

Решение

Вы можете использовать лямбда-выражение, чтобы дать вам доступ к CommandParameter... попробуй это:

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

Обратите внимание, что (как и для всех лямбда-выражений) имя parameter здесь может быть что угодно... это будет работать точно так же:

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

Это потому, что мы просто устанавливаем имя входного параметра для него перед =>,


ОБНОВЛЕНИЕ >>>

Вы пробовали это так?

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

Последний вариант - просто вызвать его так же, как вы начали с:

AddItemToNodeCommand = new RelayCommand(AddItemToNode);
Другие вопросы по тегам