Стандартный подход MVVM заключается в реализации INotifyPropertyChanged
только в ViewModel. Цель состоит в том, чтобы обновить соответствующие привязки в представлении, когда что-то изменяется в модели представления.
Однако эта цель изменяется на ViewModel с помощью View . То есть, когда вы изменяете значение в TextBox
, реализация INotifyPropertyChanged
в ViewModel обновит связанные привязки, поэтому представление обновляется корректно.
Он не охватывает изменения, сделанные в модели из внешнего источника, такие как изменения базы данных или другой интерфейс. Пока все модификации данных происходят из View, ViewModel должен знать обо всех изменениях и знать, что обновлять. Например, если вы знаете, что изменение переменной Foo
в вашей модели также изменит значение Bar
в вашей модели, было бы целесообразно вызывать как OnPropertyChanged(Foo)
, так и OnPropertyChanged(Bar)
в вашей модели представления при изменении значения. Foo
.
Другой альтернативой является использование событий между Model и ViewModel для обновления тех значений в ViewModel, которые требуют обновления. Если, как вы говорите, уведомление требуется «только в первый раз», то выполнение ручного однократного обновления для некоторого триггера также должно работать.