Составные ViewModels в приложении WPF - PullRequest
4 голосов
/ 12 марта 2012

Я столкнулся со следующей ситуацией:

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

Я хочу сделать следующее:

public CompositeVM
{
     public SearchVM SearchViewModel{get;set;}
     public DescriptionVM DescriptionViewModel{get;set;}
}

Как я уже говорил, модель представления поиска также включает в себя список найденных людей, поэтому я хотел бы, чтобы при выборе человека описание В.М.быть обновленным соответственно.

Как я могу достичь такого типа связи между виртуальными машинами?Должен ли я установить свойство SelectedPerson в SearchVM и передать его в DescriptionVM, когда выбранный элемент списка изменится (довольно высокая связь со мной)?Есть ли более простой подход к этому вопросу?

Ответы [ 2 ]

4 голосов
/ 12 марта 2012

Возможно CompositeVM подписаться на PropertyChanged событие *1003* и установить DescriptionViewModel.SetSelectedPerson(SearchViewModel.SelectedPerson).

Здесь нет никакой связи между SearchVM и DescriptionVM, так как они не знают друг друга. CompositeVM знает их обоих, а также отвечает за их взаимодействие.

1 голос
/ 12 марта 2012

В качестве альтернативы вы можете использовать шаблон Mediator-Observer, например, класс Messenger в MVVM Light:

http://blog.galasoft.ch/archive/2009/09/27/mvvm-light-toolkit-messenger-v2-beta.aspx

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