Prism + Wpf:RegionManager未加载的嵌套区域

时间:2015-11-05 17:03:52

标签: wpf xaml telerik prism

我的shell中有四(4)个区域:

  1. RibbonViewRegion:注入标签

  2. RibbonTabRegion:注入控件组

  3. RibbonGroupRegion:注入一个控件(按钮,组合框......)

  4. ContentRegion:主要内容区域

    <telerik:RadRibbonView prism:RegionManager.RegionName="{x:Static inf:RegionNames.RibbonViewRegion}" ApplicationName="Demo"> <telerik:RadRibbonTab Header="Principal" prism:RegionManager.RegionName="{x:Static inf:RegionNames.RibbonTabRegion}"> <telerik:RadRibbonGroup Header="Navigation" prism:RegionManager.RegionName="{x:Static inf:RegionNames.RibbonGroupRegion}"/> </telerik:RadRibbonTab> </telerik:RadRibbonView> <ContentControl Grid.Row="2" prism:RegionManager.RegionName="{x:Static inf:RegionNames.MainContentRegion}"/>

  5. 在模块初始化方法中,当我像这样注入我的视图时:

    RegionManager.Regions[RegionNames.RibbonGroupRegion].Add(Container.Resolve<MyView>());
    

    发生异常:

      

    Prism.Wpf.dll中出现'System.Collections.Generic.KeyNotFoundException'类型的异常,但未在用户代码中处理   附加信息:   区域管理器不包含RibbonGroupRegion区域。

    有效地:当我在此行设置断点时,我注意到只加载了三个区域 - RibbonViewRegionRibbonTabRegionContentRegion

    我的问题是:为什么我的RibbonGroupRegion未被RegionManager加载?

    注意:我实施了RadRibbonGroupRegionAdapter,效果很好。

    指导我,提前谢谢。

1 个答案:

答案 0 :(得分:1)

我解决了,我替换了这段代码:

RegionManager.Regions[RegionNames.RibbonGroupRegion].Add(Container.Resolve<MyView>());

由此:

RegionManager.RegisterViewWithRegion(RegionNames.RibbonGroupRegion, () => Container.Resolve<MyView>());

并且有效