Использование 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);
}
Другие вопросы по тегам