Как отразить изменения, внесенные в ViewModels для других окон? - PullRequest
1 голос
/ 26 сентября 2011

Мое приложение содержит следующие модули:

SystemModel -> SystemViewModel -> SystemWindow

SettingsModel -> SettingsViewModel -> SettingsWindow

My SystemViewModel содержит SettingsViewModel и другие вещи. В моем SystemViewModel я создаю экземпляр , который получает его ctor SettingsViewModel .

Если я хочу обновить настройки, я открыл новое SettingsWindow как ShowDialog с SettingsViewModel как его DataContext . Если пользователь нажимает «ОК», я обновляю настройки, иначе я не обновляю.

Моя проблема в том, что я не знаю, как обновить Настройки в Экземпляре , который я создал в SystemViewModel ( Экземпляр который получил SettingsViewModel в своем ctor).

Есть идеи?

1 Ответ

1 голос
/ 26 сентября 2011

Можете ли вы создать только один экземпляр модели представления настроек, возможно, находясь в общей модели представления, которая служит своего рода корнем для модели представления и обеспечивает клей, который связывает модели вместе?

Что-то вродеПосмотреть модель контроллера, даже если это звучит немного странно.Эта корневая модель представления может реагировать на события из моделей представления и затем может делать все, что требуется для обновления других настроек.

Другой подход - это подход, основанный на обмене сообщениями, подобный тому, который реализован в MVVM Light Toolit.Я использовал это один раз, и после того, как проект стал довольно большим, этот подход был довольно сложным в отношении обслуживания.

Обновление:

Вы можете найти информацию о MVVM Light Toolkit здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...