使用Prism 5.0
。我的shell是从MefBootstrapper
派生类实例化的。 shell有一个MainRegion
,其中使用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>
所以我认为我可以在运行时添加viewmodel,当我的主视图模型被激活时(通过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"];
}
}
问题是这段代码崩溃了。我想这意味着我有一个对根区域管理器的引用。如何获得范围区域管理器?