我目前正在使用 PRISM 和 Microsoft WPF 功能区控件构建应用程序。到目前为止,我已经能够通过如下编码 shell XAML 来使用 RegionManager 将选项卡添加到功能区......
...
<r:Ribbon Grid.Row="0" prism:RegionManager.RegionName="{x:Static c:ShellRegion.Ribbon}">
</r:Ribbon>
...
然后在每个模块的 IModule.Initialize 方法期间向功能区添加其他选项卡,如下所示...
<r:RibbonTab x:Class="Views.RibbonView" Header="TabX">
<r:RibbonGroup Header="GroupX">
<r:RibbonButton Label="Button1" />
<r:RibbonButton Label="Button2" />
</r:RibbonGroup>
</r:RibbonTab>
public void Initialize() {
this.regionManager.RegisterViewWithRegion(ShellRegion.Ribbon, typeof(Views.RibbonView));
}
我现在要做的是为 RibbonApplicationMenu 实现类似的东西。我尝试了以下...
<r:RibbonApplicationMenu x:Class="Views.ApplicationMenu">
<r:RibbonApplicationMenuItem Header="MenuItem1" />
<r:RibbonApplicationMenuItem Header="MenuItem2" />
</r:RibbonApplicationMenu>
public void Initialize() {
this.regionManager.RegisterViewWithRegion(ShellRegion.ApplicationMenu, typeof(Views.ApplicationMenu));
}
但这实际上以嵌入在应用程序菜单中的应用程序菜单结束(想想单击下拉菜单,另一个下拉菜单也可供您单击)。
显然我可以看到两者之间的明显区别;对于选项卡,我添加了一个单独的 RibbonTab,对于菜单项,我实际上添加了另一个 RibbonApplicationMenu。问题是,我找不到任何关于创建我认为可以用来“将东西合并在一起”的“RegionAdapters”的文档;我理解为什么要添加单个 RibbonTab 的作品(尽管在未来的模块中可能需要添加多个 RibbonTab,我希望不必像我目前拥有的那样单独编码每个 RibbonTab 并按照上面的示例)。同样,我知道我将不正确的子项添加到 RibbonApplicationMenu,这就是为什么我会生成嵌入式 RibbonApplicationMenu 而如果我单独编码每个 RibbonApplicationMenuItem(因为我有 RibbonTab'
我想这里的问题(是的,我终于明白了)是如何最好地解决这个问题?
在理想的世界中,我希望能够拥有一个 XAML 文件(每个模块),其中包含我想要添加到 shell 的所有 RibbonTab。同样,我希望每个模块有一个 XAML 文件,其中包含我要添加到 RibbonApplicationMenu 的所有项目。最后,我希望能够像现在一样使用 RegionManager 添加这些。
提前感谢您的帮助。