Вот как я определил TabControl
:Вводят просмотр в TabControl с помощью призмы библиотеки
<TabControl ItemsSource="{Binding OpenedProjects, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding SelectedProject, Mode=OneWay}">
<!-- headers -->
<!-- header definition is unimportant for this question -->
<!-- content -->
<TabControl.ContentTemplate>
<DataTemplate>
<local:ProjectView />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
И эти два метода, которые я определил в своем классе модулей, которые используются для регистрации и использования просмотров:
protected override void _initializeViews() {
_container.RegisterType<MainMenuView>();
_container.RegisterType<ProjectsView>();
_container.RegisterType<ProjectView>();
_container.RegisterType<ContentView>();
}
protected override void _initializeRegions() {
IRegion menuRegion = _regionManager.Regions[RegionNames.MainMenuRegion];
IRegion projectsRegion = _regionManager.Regions[RegionNames.ProjectsRegion];
IRegion contentRegion = _regionManager.Regions[RegionNames.ContentRegion];
menuRegion.Add(_container.Resolve<MainMenuView>());
projectsRegion.Add(_container.Resolve<ProjectsView>());
contentRegion.Add(_container.Resolve<ContentView>());
}
И Посмотреть конструктор:
public ProjectView(ProjectsViewModel vm) {
InitializeComponent();
DataContext = vm;
}
То, что я хочу добиться того, чтобы Инджа ct ProjectView
в область содержимого TabControl
. Очевидно, что в настоящее время это не работает из-за аргумента ViewModel
в указанном выше конструкторе. Как я могу создать эту функциональность, путь PRISM?
EDIT:
Я нашел это: How to inject views into TabControl using Prism? Однако, если я делаю то же самое, как автор этого вопроса, я получаю:
System.InvalidOperationException: ItemsControl's ItemsSource property is not empty.