У меня большое количество классов ViewModel.Для каждого из этих классов существует соответствующий файл .xaml, который является 'UserControl'.В моем App.xaml я зарегистрировал их как DataTemplates, например:
<DataTemplate DataType="{x:Type viewModel:MainMenuViewModel}">
<view:MainMenuView/>
</DataTemplate>
При том, что WPF сможет автоматически заменять необходимые пользовательские элементы управления во время выполнения.Например, это работает:
<Grid>
<StackPanel>
<TextBlock Text="SuperApp" />
<ItemsControl>
<ViewModels:MainMenuViewModel/>
</ItemsControl>
</StackPanel>
</Grid>
При этом запись «MainMenuViewModel» автоматически заменяется на MainMenuView, привязанную к MainMenuViewModel.Отлично.Моя текущая цель теперь такова: я хочу иметь кнопку, скажем, для представления, встроенного в MainMenuView, которое открывает всплывающее окно, в котором будет новая ViewModel.Идея состоит в том, чтобы настроить его так, чтобы у меня была единственная «универсальная» всплывающая форма, в которую я вставил произвольную ViewModel, и позволил WPF обрабатывать его фактическое отображение с помощью DataTemplates, как описано выше.Итак, у меня есть команда, привязанная к кнопке, например:
<Button Command="{Binding Path=LaunchInStandaloneForm}" Content="Rip Out"/>
, которая успешно создает новое окно, устанавливает dataContext равным соответствующему ViewModel и показывает окно.
Вопрос заключается в следующем: как настроить XAML этого всплывающего окна, чтобы он отображал соответствующий DataTemplate для ViewModel, который является DataContext?Я пробовал:
<Grid>
<ItemsControl ItemsSource="{Binding Path=.}">
</ItemsControl>
</Grid>
, но ничего не получается.Есть указатели?