使用Prism 5.0
. 我的外壳是从MefBootstrapper
派生类实例化的。shell 有一个MainRegion
where 视图是使用AutoPopulateExportedViewsBehavior
(在StockTraderRI示例中找到的)添加的。这完美地工作。
但是,在我加载到的视图之一中MainRegion
,有一个TabControl
我想在运行时添加活动感知视图模型的地方。该IActiveAware
界面仅在控件位于区域内且区域不允许我绑定到ItemsSource
. 因此这个构造:
<TabControl prism:RegionManager.RegionName="TabRegion">
<TabControl.Resources>
<DataTemplate DataType="{x:Type local:MyTabViewModel1}">
</DataTemplate>
<DataTemplate DataType="{x:Type local:MyTabViewModel2}">
</DataTemplate>
</TabControl.Resources>
</TabControl>
所以我认为我可以在运行时添加视图模型,当我的主视图模型被激活时(通过IActiveAware
):
protected override void OnActiveChanged(bool active)
{
if (active)
{
// This code crashes.
// The region does not exist in the root region manager...
var region = regionManager.Regions["TabRegion"];
}
}
问题是这段代码崩溃了。我想这意味着我有对根区域管理器的引用。我如何获得作用域区域经理?