INotifyPropertyChanged на модельных классах
Как правило, желательно реализовать INotifyPropertyChanged для классов Model, ViewModel или обоих? Можно ли реализовать только на модели, а не на Viewmodel? Если не возможно модель то почему
3 ответа
Основное правило таково: не бывает сложной и быстрой архитектуры, вы можете изменять ее в соответствии со своими потребностями, поэтому некоторые архитектуры более предпочтительны.
для ваших точных потребностей пройти через это
и в этом обсуждении достаточно точек, чтобы охватить оба аргумента, посмотреть, какой из них соответствует вашему проекту.
это может помочь вам реализовать..
Вы должны понимать значение INotifyPropertyChanged. Его цель - поднять уведомление от цели к источнику, когда вы определяете Binding в WPF. DependencyProperty и INotifyPropertyChanged связаны для автообновления для концепции привязки. Если вам необходимо привязать свойство к модели представления для просмотра, вам необходимо реализовать механизм уведомлений, чтобы уведомлять пользовательский интерфейс об изменениях в модели представления. То же правило применяется к модели для просмотра.
Предположим, вы хотите закодировать в файл.CS как Viewmodel.Name =" my new name"
и ожидаем, что TextBox должен отображать измененное имя.
<TextBox Text="{Binding ViewModel.Name} "/>
Здесь представление модели необходимо реализовать INotifyPropertyChanged.
<TextBox Text="{Binding Model.Name} "/>
здесь модель должна реализовывать INotifyPropertyChanged
Надеюсь, это проясняет.
В этом обсуждении, возможно, стоит отметить, что сами Microsoft добавляют INPC в свои собственные модели, например, классы, автоматически генерируемые при подписке на веб-службу. Я видел это и в других местах, включая смутное воспоминание об этом где-то в их материалах EF. Я сам автоматически добавляю его в свои объекты DAL, используя Castle Proxy, чтобы мне не приходилось дублировать все в модели представления, хотя вы также можете использовать такие вещи, как Fody и т. Д., Чтобы добавить его в IL на этапе постобработки.