Использование RelayCommand для отправки сложных данных в модель MVVM - PullRequest
2 голосов
/ 09 декабря 2010

У меня есть сложный интерфейс запросов, который мне нужно передать через RelayCommand моей модели. Он состоит из нескольких выпадающих списков, флажков и ввода текста.

Я легко могу передать один параметр команды (т.е. RelayCommand и т. Д.), Но как бы я инкапсулировал команды, если это RelayCommand и т. Д. Это кажется немного чрезмерным.

Любые советы будут с благодарностью

Спасибо

1 Ответ

4 голосов
/ 09 декабря 2010

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