У нас есть «старое» приложение WPF, основанное на NavigationWindow. 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, динамически добавив Region, просто имея элемент управления корневой вкладкой без ContentPresenter, но я не могу заставить это работать Есть идеи?