我就是这样定义的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>
这些是我在 Module 类中定义的两个方法,用于注册和使用视图:
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;
}
我想要实现的是注入ProjectView
到TabControl
's 的内容区域。ViewModel
显然,由于上述构造函数中的参数,目前它不起作用。如何以 PRISM 方式创建此功能?
编辑:
我发现了这个:如何使用 Prism 将视图注入 TabControl?但是,如果我和那个问题的作者做同样的事情,我会得到:
System.InvalidOperationException: ItemsControl's ItemsSource property is not empty.