2011-01-11 2 views
2

В настоящее время я создаю приложение с использованием 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, как я это делаю в настоящее время.

Заранее благодарим за любую помощь.

+0

Для записи я просмотрел 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 для вдохновения, прежде чем спрашивать здесь. –

ответ

2

Лучший способ достичь того, что вы пытаетесь сделать, это, как вы сказали, создание настраиваемого RegionAdapter.

Это объясняется в this section документации Prism (под Адаптеры региона).

Некоторое время назад я создал Region Adapter for the Accordion Control, который также может оказаться полезным.

Надеюсь, это поможет.

+1

+1 Согласен. Пользовательский 'RegionAdapter' для' RibbonApplicationMenu' - это путь. – decyclone

1

Вы можете найти код для RbbonRegionAdapter here. Это сработало для меня.

Смежные вопросы