Способы моделирования взаимодействия модели дочернего представления с моделью родительского представления? - PullRequest
2 голосов
/ 26 сентября 2011

Рассмотрим некоторую презентацию управления персональной информацией с PimDetailVm, которая принимает объект Person в качестве модели.Презентация будет управлять различными аспектами о человеке (имя, контактные точки, адреса и т. Д.), Что в совокупности приведет к размыванию исходной модели вида.

Поэтому я хочу разделить модели спутникового обзора для каждого.Хотя исходная модель представления по-прежнему несет ответственность за разрешение и принятие обновлений, поэтому, как минимум, ей необходимо знать, верны ли IsDirty и IsValid, и текущее состояние модели.

Cheers,
Berryl

ОБНОВЛЕНИЕ

В моем исходном сообщении слишком много текста (было);может быть, организация этого лучше получит больше ответов и оставит след чего-то полезного, поэтому

Параметры синхронизации между родителями и детьми

  1. INPC
    • Плюсы - ужереализовано VM
    • Минусы - срабатывает несколько раз, возможно, должно быть ограничено только для привязки данных
  2. Посредник
    • Плюсы - чистое разделение намерений
    • Минусы - не знаете, как реализовать и использовать в общем виде
  3. Агрегатор событий
    • Плюсы - общая абстракция
    • Минусы - не знаете, как реализовать и использовать в общем виде
  4. Событие домена (т. Е. PersonUpdated), и пусть модель будет источником синхронизации
    • Плюсы - возможно, это событие принадлежит здесь, упрощает инфраструктуру виртуальных машин
    • Минусы - не уверен
  5. Событие внутри модели (т.е. ViewModelUpdated)
    • Плюсы - чище, чем INPC, поскольку он запускает только одинd его намерение ясно
    • Минусы - не уверен
  6. Жесткая ссылка (то есть Parent.Update ())
    • Плюсы - намерение ясно,легче отлаживать
    • Минусы - жесткая связь
  7. наследовать от объекта зависимостей
    • Плюсы - Понравится
    • Минусы- не подлежит повторному использованию, жесткая связь с диспетчером WPF
  8. наследует виртуальную машину от DynamicObject
    • Плюсы - вы можете делать то, что хотите
    • Минусы -изменяет структуру ViewModel, сложную для неопытных программистов
  9. включает АОП с перехватчиком
    • Плюсы - делайте что хотите
    • Минусы - кривая обучения, не очевидно

1 Ответ

0 голосов
/ 01 октября 2011

Просто, чтобы завершить это на самом деле, Пит Браун рассматривает некоторые аспекты этого здесь .

Джош Смит также имеет два очень полезных класса в hi MVVM Foundation library , которые решают эту проблему: Messenger и PropertyObserver.

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