Меня немного смущает, как создать представление Master Detail с двумя различными пользовательскими элементами управления.
Есть три варианта,
Выбор 1
CustomerMasterView + CustomerMasterViewModel
CustomerDetailView + CustomerDetailViewModel
И держите обе модели просмотра в App.Resources
Но при этом привязка становится сложной со всем исходным кодом разметки статических ресурсов.
Выбор 2
CustomerViewModel
CustomerMasterView
CustomerDetailView
Оба представления совместно используют один и тот же ViewModel через App.Resources, хорошо, даже если в коде привязки слишком много элементов.
Выбор 3
CustomerMasterView + CustomerMasterViewModel
CustomerDetailView + CustomerDetailViewModel
Оба представления имеют DataContext, установленный на соответствующую ViewModel. Теперь вот небольшая проблема,
CustomerMasterView имеет Selector (ListBox или DataGrid или любой другой), чей SelectedItem должен быть привязан к свойству CustomerDetailViewModel «Customer» как двусторонняя привязка.
Это выглядит хорошо?
<!-- CustomerMasterView -->
<ListBox
ItemsSource="{Binding CustomerList}"
SelectedItem="{Binding DataContext.Customer,ElementName=customerDetailView}"
/>
<local:CustomerDetailView
x:Name="customerDetailView"
/>
Но, делая это, я бросаю вызов цели ViewModel, поскольку она добавляет больше зависимости в мой код пользовательского интерфейса.
Какой из них является наиболее предпочтительным или есть другой способ?
Должен ли я создавать вложенные модели просмотра?
Я также пытаюсь изучить Призму, и у меня нет путаницы в том, как сделать это правильно, любая помощь будет оценена.