Как вы справляетесь с удалением вашей модели, работая с ViewModels и поддерживая их синхронизацию? - PullRequest
0 голосов
/ 23 декабря 2010

Это могут быть мои сущностные отношения:

1 Pupil has 1 Chair

1 Pupil has N Documents

1 Pupil has N Marks

1 Pupil has N IncidentReports

и т.д ...

Итак, с этим образцом я получаю 4 IEnumerable из моей базы данных, помещая каждый в ObservableCollection.

Теперь у меня есть 4 различных вида, каждый из которых привязан к одной из этих 4 коллекций.

Предположим, что я удаляю одну PupilViewModel в AdministrationController, который является единственным представлением, где я могу удалить PupilViewModel.

Теперь я должен сообщить 3 другим Controller и их ObservableCollections об одном удаленном PupilViewModel, чтобы сохранить синхронизацию всего приложения ... это глупо, так или иначе.

У вас есть хороший совет по этому сценарию?

И становится еще хуже. Если я удаляю школьный класс, я должен синхронизировать учеников везде И с документами или инцидентами, отчетами или отметками ...

1 Ответ

0 голосов
/ 24 декабря 2010

Я бы предложил использовать EventAggregator от таких платформ, как Prism, Caliburn. Самое интересное в этом - то, что вы регистрируете интерес к известному предмету или объекту в каждой ViewModel, и когда удаление ученика происходит вместе со всеми ViewModel, заинтересованными в знании об изменении, может обновить (или синхронизировать) ObservableCollections, поскольку ученик или id) передается всем слушателям.

Другой альтернативой, которая может быть более трудоемкой, было бы иметь один объект модели, экземпляр которого имеют все эти модели ViewModel. Эта модель отвечает за обновление списков, которые она имеет, и при условии, что она реализует INotifyPropertyChanged и имеет коллекции, привязанные к представлению, тогда представления обновятся.

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