我的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}"/>
在模块初始化方法中,当我像这样注入我的视图时:
RegionManager.Regions[RegionNames.RibbonGroupRegion].Add(Container.Resolve<MyView>());
发生异常:
Prism.Wpf.dll中出现'System.Collections.Generic.KeyNotFoundException'类型的异常,但未在用户代码中处理 附加信息: 区域管理器不包含RibbonGroupRegion区域。
有效地:当我在此行设置断点时,我注意到只加载了三个区域 - RibbonViewRegion
,RibbonTabRegion
和ContentRegion
我的问题是:为什么我的RibbonGroupRegion
未被RegionManager
加载?
注意:我实施了RadRibbonGroupRegionAdapter
,效果很好。
指导我,提前谢谢。
答案 0 :(得分:1)
我解决了,我替换了这段代码:
RegionManager.Regions[RegionNames.RibbonGroupRegion].Add(Container.Resolve<MyView>());
由此:
RegionManager.RegisterViewWithRegion(RegionNames.RibbonGroupRegion, () => Container.Resolve<MyView>());
并且有效