我目前正在使用PRISM和Microsoft WPF Ribbon控件构建一个应用程序。我迄今已经能够突出部添加到使用RegionManager通过编码壳XAML如下色带...WPF Microsoft.Windows.Controls.Ribbon.RibbonApplicationMenu&PRISM
...
<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),并相应地添加它们,那么它们也可以工作。
我想这里的问题(是的,我终于得到它)是如何最好的方法呢?
在理想的世界中,我希望能够有一个包含所有要添加到shell的RibbonTab的XAML文件(每个模块)。同样,我希望每个模块的单个XAML文件包含要添加到RibbonApplicationMenu的所有项目。最后,我希望能够像我目前那样使用RegionManager添加这些内容。
在此先感谢您的帮助。
为了记录,我查看了http://blog.joachim.at/?p=44,http://wpf.codeplex.com/wikipage?title=WPF%20Ribbon%20Preview&ProjectName=wpf,http: //stalamoni.blogspot.com/2009/02/creating-ribbontab-programatically.html,http://bartekszafko.pl/2008/11/29/en-wpf-ribbon-in-prism-applications/和http:///blogsprajeesh.blogspot.com/2009/09/prism-creating-custom-region-adapter.html寻求灵感。 – 2011-01-11 21:43:19