Передайте различные параметры команды одной и той же команде, используя 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);