MVVM с Silverlight - PullRequest
       7

MVVM с Silverlight

0 голосов
/ 11 февраля 2012

Я загружал множество примеров кода, чтобы помочь мне лучше понять MVVM в Silverlight.

Одна из замеченных мной вещей - это несоответствие в загруженном образце кода.Некоторые, например, реализуют INotifyPropertyChanged на моделях представления, где другие реализуют его на модели.

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

Ответы [ 2 ]

2 голосов
/ 12 февраля 2012

Обработка (уведомление) изменений свойств в модели представления выглядела бы более естественной, если бы это обновляло элемент, отображаемый в представлении, путем привязки данных.

Одна из причин, по которой модель просмотра в первую очередь заключается в том, что она хранит данные из модели таким образом, что представление легко связывается с ней.
Таким образом, если основная причина вашего INotifyPropertyChange заключается в том, чтобы обновить элемент, связанный с представлением, вы должны обновить его в модели представления.

1 голос
/ 12 февраля 2012

Я обычно использую DependencyProperty вместо INotifyPropertyChanged, но идея та же.

Их цель - уведомить элементы управления представления, с которыми они связаны, о том, что они изменились, чтобы представление могло обновляться. Это подразумевает слабую связь между представлением и тем, что содержит свойство или объект. В MVVM представление никогда не должно иметь какой-либо связи с моделью из-за разделения интересов.

У меня часто будет физическая сила, создавая отдельный проект для каждого вида, модели представления и модели. Итак, ответ на ваш вопрос заключается в том, что INotifyPropertyChanged должен быть реализован на уровне модели представления, потому что представление никогда не должно касаться чего-либо на уровне модели. Сказав это, MVVM - это просто парадигма кодирования, облегчающая работу программистов, поэтому могут быть причины для ее реализации по-другому, если это означает облегчение вашей работы и не имеет никаких негативных последствий.

...