Использование RelayCommand для отправки сложных данных в модель MVVM
У меня есть сложный интерфейс запросов, который мне нужно передать через RelayCommand моей модели. Он состоит из нескольких выпадающих списков, флажков и ввода текста.
Я легко могу передать один параметр команды (т.е. RelayCommand и т. Д.), Но как бы я инкапсулировал команды, если это будет RelayCommand и т. Д. Это кажется немного чрезмерным.
Любые советы будут с благодарностью
Спасибо
1 ответ
Решение
Приемлемым решением является привязка всех ваших выпадающих списков, флажков и ввода текста к определенным свойствам модели представления, а затем использование значений реквизитов в обработчике RelayCommand вместо передачи данных в качестве CommandParameter.
Вот пример:
Ваш XAML:
<TextBox Text={Binding Arg1} />
<TextBox Text={Binding Arg2} />
<Button Command={Binding Cmd} />
Ваш ViewModel.cs:
public string Arg1 { get; set; }
public string Arg2 { get; set; }
public ICommand Cmd { get; set; }
...
Cmd = new RelayCommand(OnCmd);
...
// We will not use command parameter at all
private void OnCmd(object o)
{
// Some logic that uses a lot of arguments
Console.WriteLine(Arg1 + Arg2);
}