2016-01-09 3 views
1

Прошло некоторое время с тех пор, как я попал в WPF, и поэтому я провожу некоторое время, вспоминая себя некоторыми методологиями.Реализовать INotifyPropertyChanged на моделях или моделях?

Относительно этого MSDN Article - INotifyPropertyChanged должен быть реализован в классах моделей. Это немного сбивает с толку, потому что в других статьях я вижу INotifyPropertyChanged, реализованный в режимах просмотра. Некоторые даже реализуют его на обоих. Реализованные детали только для конкретного проекта или есть способ «наилучшей практики» для реализации INotifyPropertyChanged в wpf и mvvm?

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

Мой общий вопрос: какова наилучшая практика при внедрении уведомления об изменении? Реализация на моделях или моделях просмотра?

ответ

1

Мой совет: используйте его там, где он вам нужен.. Вы бы реализовали его как на моделях, так и на моделях просмотра.

Если у вас есть свойство в ViewModel, которое вы хотите отслеживать в своем xaml, вы бы не создали модель для инкапсуляции, потому что это было бы излишним.

Реализация INotifyPropertyChanged для ViewModel является абсолютно обычным способом в шаблоне MVVM.

Вы можете найти эту практику внутри нескольких библиотек MVVM, как MVVM Light, который имеет класс ViewModelBase, что вы унаследовали от своих ViewModels, чтобы иметь INotifyPropertyChanged реализованы де-факто.

0

INotifyPropertyChanged обычно используется во всем представлении ViewModel, чтобы сообщить View, что какое-то значение где-то изменилось и что оно должно быть привязано к применимым данным.

Для изменения в модели:

ViewModel должны знать, что свойство изменилось в модели просто потому, что ViewModel изменил свойство.

Смежные вопросы