2015-02-24 3 views
0

В настоящее время я работаю над разработкой приложения с использованием шаблона проектирования WPF и MVVM. Я пытаюсь сделать следующее:WPF & MVVM - Как поделиться одной моделью в нескольких моделях просмотра

Я хотел бы иметь две модели: родительский и детский. Родительский класс имеет несколько объектов дочернего класса, и каждый дочерний элемент разделяет один родительский объект.

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

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

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

Итак, я хотел бы поделиться одной родительской моделью с моделью детского представления и моделью родительского представления, не позволяя модели родительского представления иметь модели детского вида.

Не могли бы вы дать какие-либо решения этой проблемы? Спасибо.

+0

Модели не должны знать модель представления. В моем случае у меня есть ParentViewModel, у которого есть ParentModel, и я создам ChildModel и добавлю его в ParentModel и добавлю ChildModel в ChildViewModel, а затем добавлю ChildViewModel в ParentViewModel. Это будет много работы, но это «чисто», так сказать. – Kcvin

ответ

0

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

  1. Я зарегистрировал пользовательское свойство под названием «ChildModels», которое связывает ObservableCollection.
  2. Я создал поведение, называемое OnChildModelsPropertyChanged, и запустил его, когда дочерние модели заданы из родительской модели представления.
  3. В OnChildModelsPropertyChanged методы, я создал такое же количество зрения ребенка моделей как дети-модели и дал модель ребенка к каждой модели представления ребенка
  4. Это создало связь между родительской моделью и моделью ребенка, не давая родитель модель просмотра и модель детского просмотра знают друг друга.

Мое объяснение может звучать очень плохо для вас. Но это почти все, что я сделал.

Благодарим вас за ваш ответ и получите приятную жизнь!

Смежные вопросы