У меня есть общий вид, в котором я «внедряю» какой-то конкретный вид в содержащийся ContentControl
(я создал эту функцию с помощью этих справок -> help 1 - help 2 ) .
Основным источником моих взглядов являются:
MyGenericView.xaml
<UserControl x:Class="MyNS.MyGenericView"
... >
<UserControl.Resources>
<vml:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
</UserControl.Resources>
<Grid DataContext="{Binding MyGenericViewModel, Source={StaticResource Locator}}">
<ContentControl Content="{Binding MyObject}" />
</Grid>
</UserControl>
CustomerView.xaml
<UserControl x:Class="AnotherNS.CustomerView"
... >
<Grid>
<StackPanel Orientation="Vertical">
<Label Content="Description" />
<TextBox Text="{Binding description}" />
</StackPanel>
</Grid>
</UserControl>
Crud.xaml
: словарь ресурсов, который я использую, чтобы «решить», как правильно отображать представление, в зависимости от DataType
из MyObject
объекта, предоставленного универсальным представлением.
<ResourceDictionary ... >
<DataTemplate DataType="{x:Type mo:Customer}">
<vw:CustomerView />
</DataTemplate>
<DataTemplate DataType="{x:Type mo:Product}">
<vw:ProductView />
</DataTemplate>
...
</ResourceDictionary>
Работает нормально. Я могу управлять MyObject
через «определенный» вид (клиент, продукт и т. Д.).
Ну. Это моя проблема:
Все конкретные представления имеют свои собственные модели ViewModel и, конечно, они управляют данными соответствующих представлений. Но я не знаю (в модели представления), с каким объектом (MyObject) я работаю, потому что общий вид предоставляет его для конкретного представления, а не для модели представления.
Есть ли способ, чтобы ViewModels определенных видов знали объект, который "командует" видом?