События WPF - Handling от пользовательского элемента управления в поле зрения Модель

Я создаю приложение WPF с помощью шаблона MVVM (оба - новые технологии для меня). Я использую пользовательские элементы управления для простых битов допускающей повторное использование функциональности, которая не содержит бизнес-логику и шаблон MVVM для создания прикладной логики. Предположим, что представление содержит мой пользовательский элемент управления, который запускает события, и я хочу добавить обработчик событий к тому событию. Тот обработчик событий должен быть в модели представления представления, потому что это содержит бизнес-логику. Вопрос – представление и модель представления соединены только путем привязки; как я соединяю привязку использования обработчика событий? Это даже возможно (я подозреваю не)? Если не – как я должен обработать события от управления в модели представления? Возможно, я должен использовать команды или INotifyPropertyChanged?

16
задан Vitaly 28 May 2010 в 06:56
поделиться

1 ответ

Вообще говоря, это хорошая практика MVVM, чтобы избежать кода в коде позади, как это было бы в случае, если бы вы использовали события в своих пользовательских элементах управления. Поэтому, когда это возможно, используйте INotifyPropertyChanged и ICommand .

С учетом сказанного, в зависимости от вашего проекта и от того, насколько вы прагматичны, в некоторых случаях имеет смысл использовать исходный код элемента управления.

Я несколько раз использовал что-то вроде этого:

private void textBox1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    MyViewModel vm = this.DataContext as MyViewModel;
    vm.MethodToExecute(...);
}

Вы также можете рассмотреть Attached Command Behavior , дополнительную информацию об этом и реализации можно найти здесь:

Запуск события двойного щелчка из элемент WPF ListView с использованием MVVM

14
ответ дан 30 November 2019 в 22:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: