В настоящее время я создаю приложение с использованием PRISM и элемента управления ленты WPF Microsoft. Я до сих пор не в состоянии добавить вкладки на ленту с помощью 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) и добавьте их соответственно, тогда они тоже будут работать.
Я думаю, что вопрос здесь (да, я, наконец, пришел к нему), как лучше подойти к этому?
В идеальном мире я хотел бы иметь один файл XAML (для каждого модуля), который содержит все теги RibbonTab, которые я хочу добавить в оболочку. Аналогично, мне нужен один файл 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 для вдохновения, прежде чем спрашивать здесь. –