WPF MVVM: Как ViewModels взаимодействуют друг с другом?
У меня есть представление, у которого есть 2 подвыбора на нем, и каждому представлению присваивается ViewModel:
ViewA - ViewModelA
{
ViewB - ViewModelB
ViewC - ViewModelC
}
ViewB имеет текстовое поле, а в ViewC есть выпадающая скобка, из которых мне нужен доступ из ViewModelA. Не сам контроль GUI, а связанное значение, т.е. Текстовое поле и .SelectedItem из ComboBox. В настоящее время у меня только ViewModelB и ViewModelC как свойства на ViewModelA, но он чувствует себя не так.
Какой стандартный способ просмотра моделей взаимодействовать друг с другом, не нарушая шаблон MVVM? Я полностью новичок в WPF/MVVM.
Ответы
Ответ 1
Один из способов отключить ViewModels друг к другу - использовать механизм публикации/подписки, такой как PRISM EventAggregator. Тем не менее, в отношениях родительского/дочернего ViewModel я считаю, что для родителя было бы хорошо иметь непосредственное знание и контроль над дочерним ViewModel.
Лично я не думаю, что создание ViewModel из других ViewModels - это плохая практика. Я делаю это все время. Я вообще предпочитаю композицию над наследованием в моих моделях ViewModels.
Ответ 2
ViewModels узумно "наследует" отношения от Модели. И это не неправильно добавлять отношение, когда это имеет смысл.
Совершенно нормально, если ViewModel имеет свойство ссылаться на другой ViewModel.