Как получить изменения из модели в вид модели? - PullRequest
3 голосов
/ 06 февраля 2012

В настоящее время я занят переписыванием приложения в MVVM (поэтапно, потому что это много работы).

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

Однако мне было интересно, какие изменения в модели будут отражены в виде модели (и, следовательно, в виде).Должен ли я добавить интерфейсы INotifyPropertyChange ко всем элементам в модели и подписаться на просмотр модели (возможно, даже как цепочка, если я хочу подписаться на элемент, который не находится в верхней части иерархии модели)?

Например, у меня есть список A, содержащий список B и т. Д. Нужно ли подписываться в списке A для изменения свойств списка B и в представлении модели подписываться на список A?И отписаться, если будет сделан другой выбор в списке (что приведет к большому количеству отписавшихся и новых пунктов подписки)?

Спасибо за чтение / ответ.

Ответы [ 2 ]

6 голосов
/ 06 февраля 2012

Да, обычно вы используете INotifyPropertyChanged в своих моделях и подписываетесь в своих моделях представления. Если вы используете каркас, такой как CSLA , для своих бизнес-сущностей, то Рокки описывает анемичную модель по сравнению с расширенной моделью, где позже вы представляете модель непосредственно представлению модели представления в качестве свойства.

Я думаю, INotifyPropertyChanged - это стабильная зависимость, поэтому она не сильно загрязняет ваши модели. Некоторые люди не любят подвергать модель непосредственному представлению, но я считаю, что это сильно экономит или повторяет код. Вы можете обнаружить, что если вы этого не сделаете, ваши модели представлений в конечном итоге дублируют многие свойства вашей модели без добавления какого-либо значения.

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

Если я правильно понимаю, вы хотите программно изменить свои данные в модели и соответственно отобразить обновленные данные через viewmodel?

Я бы предложил вам вместо этого изменить свойства viewmodel в вашем коде и использовать толькомодели для загрузки / сохранения данных, которые устранят эту проблему.

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