Как ViewModel получает уведомление об изменении свойства элемента данных? - PullRequest
2 голосов
/ 24 июня 2011

ViewModel может уведомить View об изменении свойства, вызвав событие изменения свойства.Если базовые данные (например, класс Plain, которые не реализуют IPropertyChange) изменяются, как ViewModel может получать уведомления?

1 Ответ

2 голосов
/ 24 июня 2011

Если базовые данные (например, класс Plain, которые не реализуют IPropertyChange) изменяются, как ViewModel может получать уведомления?

Не может, должен быть механизм для уведомления. Наиболее вероятной причиной является то, что POCO, который используется в одном регионе (или модуле) приложения, также используется в другом, то есть в слабосвязанной ситуации мастер-детализация. Если вы «разделяете» один и тот же экземпляр POCO, как этот, маловероятно, что вы также не внедрили в него уведомление об изменении. Если вы внедрили уведомление об изменении, то изменение в одном модуле приложения будет автоматически отображаться для другого модуля (они оба смотрят на один и тот же объект), и все, что отслеживает это уведомление об изменении (например, подсистема привязки), будет делать его вещь и забрать изменения.

Если у вас есть два отдельных экземпляра одних и тех же данных, и один обновляется, другой не узнает об этом. Это также происходит, когда ваша виртуальная машина запрашивает данные через модель, а модель получает данные из отключенного источника данных, такого как база данных или веб-служба. Вы не знаете, когда базовые данные были изменены, еще раз вам нужно внедрить систему уведомлений об изменениях. Вы также можете предпринять еще один подход - позволить пользователю изменить данные, затем выполнить свежий сбор данных перед сохранением изменений пользователя, и если базовые данные изменились во время работы пользователя, вы можете уведомить пользователя и принять соответствующее действие (или пусть пользователь выберет подходящую вещь).

Это отвечает на ваш вопрос? Или вы хотите подробнее рассказать о том, что вы хотите знать?

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