Правильный способ в MVVM направить обработку RelayCommand родительской модели представления
-
18-09-2019 - |
Вопрос
Я очень новичок в MVVM и даже в какой-то степени в WPF, так что потерпите меня...
У меня есть приложение MVVM, которое имеет главное окно, содержащее экземпляр viewmodel разных типов в зависимости от состояния приложения.Одной из таких моделей просмотра является экран параметров, который содержит кнопку для перезапуска приложения и входа в базу данных как другой пользователь. Используя RelayCommand, как я могу заставить родительский элемент (главное окно) обработать эту команду и выдать Window.Вызов метода Close()?
Решение
Определите RelayCommand в модели родительского представления.Связанные обработчики также будут определены в модели родительского представления.
Теперь, когда вы создаете дочерний модуль просмотра, передайте объект Paremtn View model в дочернюю ViewModel в конструкторе (шаблон внедрения зависимостей).
Теперь вы можете настроить привязку команд для вашего вида или модели представления.
Другой альтернативой было бы фактически использовать маршрутизируемую команду вместо команды relay и позволить ей всплывать в вашей модели parentview.