У меня есть пользовательский интерфейс с вложенными пользовательскими элементами управления WPF, каждый со своими моделями представления.Простой случай иерархии представлений (XAML):
MainWindow
|-> Logical group
|-> Logical control
|-> Second logical group
|-> Third logical group
|-> Logical control
Каждое представление XAML имеет ViewModel, который инкапсулирует логику взаимодействия.Мои вопросы касаются передачи состояния ViewModel из модели родительского представления в модели дочернего представления.
Например, взаимодействие с пользователем в MainWindow
может установить переменную CurrentlySelectedGroup
в MainWindowViewModel
.Мне нужно знать, что это значение внутри LogicalControlViewModel
.
. Есть два основных способа сделать это.Сначала я мог передать событие DispatchGroupSelected
, а затем назначить делегата внутри LogicalControlViewModel
в качестве прослушивателя этого события.Во-вторых, я мог бы Bind
в CurrentlySelectedGroup
свойство MainWindowViewModel
внутри LogicalControlViewModel
.
Мой первый инстинкт - использовать события для связи между родительскими и дочерними моделями представления.Я думаю, что связывание лучше всего хранить между моделью представления и ее видом.События до сих пор использовались для связи между моей ViewModel и командами.Если есть другое возможное направление, которое было бы лучше, мне было бы интересно узнать об этом.