我们有一个基于 NavigationWindow 的“旧版”WPF 应用程序。NavigationWindow 有一个相当大的 ControlTemplate,其中包含一个 ContentPresenter,如下所示:
<ControlTemplate>
....snip...
<ContentPresenter x:Name="PART_NavWinCP" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
.....snip....
</ControlTemplate>
我们想要做的是使用 ContentPresenter 作为第一个选项卡,并在运行时动态添加其他选项卡。像这样:
<ControlTemplate>
....snip...
<TabControl Background="Transparent" cal:RegionManager.RegionName="MainRegion" Grid.ColumnSpan="2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<TabItem Header="Nav Window Content">
<ContentPresenter x:Name="PART_NavWinCP" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
</TabItem>
</TabControl>
.....snip....
</ControlTemplate>
然后我们的模块抓取 RegionName 并动态插入它们的内容。问题似乎是 PRISM 区域管理器不喜欢我们的代码位于 ContentTemplate 中并且无法解析该区域。我已经尝试更新 RegionManager,动态添加区域,只是有一个没有 ContentPresenter 的根选项卡控件,但我无法让它工作。有任何想法吗?