Подтвердить что ты не робот

WPF MVVM: Как ViewModels взаимодействуют друг с другом?

У меня есть представление, у которого есть 2 подвыбора на нем, и каждому представлению присваивается ViewModel:

ViewA - ViewModelA
{ 
   ViewB - ViewModelB
   ViewC - ViewModelC
}

ViewB имеет текстовое поле, а в ViewC есть выпадающая скобка, из которых мне нужен доступ из ViewModelA. Не сам контроль GUI, а связанное значение, т.е. Текстовое поле и .SelectedItem из ComboBox. В настоящее время у меня только ViewModelB и ViewModelC как свойства на ViewModelA, но он чувствует себя не так.

Какой стандартный способ просмотра моделей взаимодействовать друг с другом, не нарушая шаблон MVVM? Я полностью новичок в WPF/MVVM.

4b9b3361

Ответ 1

Один из способов отключить ViewModels друг к другу - использовать механизм публикации/подписки, такой как PRISM EventAggregator. Тем не менее, в отношениях родительского/дочернего ViewModel я считаю, что для родителя было бы хорошо иметь непосредственное знание и контроль над дочерним ViewModel.

Лично я не думаю, что создание ViewModel из других ViewModels - это плохая практика. Я делаю это все время. Я вообще предпочитаю композицию над наследованием в моих моделях ViewModels.

Ответ 2

ViewModels узумно "наследует" отношения от Модели. И это не неправильно добавлять отношение, когда это имеет смысл.

Совершенно нормально, если ViewModel имеет свойство ссылаться на другой ViewModel.