我的shell中有四(4)个区域:
-
RibbonViewRegion
:注入标签 -
RibbonTabRegion
:注入一组控制 -
RibbonGroupRegion
:注入一个控件(按钮、组合框…) -
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}"/>
在模块Initialize方法中,当我像这样注入我的视图时:
RegionManager.Regions[RegionNames.RibbonGroupRegion].Add(Container.Resolve<MyView>());
出现异常:
Prism.Wpf.dll中出现类型为"System.Collections.Generic.KeyNotFoundException"的异常,但未在用户代码中进行处理附加信息:区域管理器不包含RibbonGroupRegion区域。
实际上:当我在这条线上设置断点时,我注意到只有三个区域被加载——RibbonViewRegion
、RibbonTabRegion
和ContentRegion
我的问题是:为什么我的RibbonGroupRegion
没有被RegionManager
加载?
注意:我实现了RadRibbonGroupRegionAdapter
,它运行良好。
引导我,提前谢谢。
我解决了它,我替换了这个代码:
RegionManager.Regions[RegionNames.RibbonGroupRegion].Add(Container.Resolve<MyView>());
通过这个:
RegionManager.RegisterViewWithRegion(RegionNames.RibbonGroupRegion, () => Container.Resolve<MyView>());
并且它工作于