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

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

Ответы

Ответ 1

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

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

В некоторых случаях я использовал что-то вроде этого:

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

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

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