WPF Microsoft.Windows.Controls.Ribbon.RibbonApplicationMenu & PRISM - PullRequest
2 голосов
/ 12 января 2011

В настоящее время я создаю приложение, используя PRISM и элемент управления Microsoft WPF Ribbon.До сих пор я мог добавлять вкладки на ленте с помощью RegionManager, кодируя оболочку XAML следующим образом ...

...
<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's) и добавлял их соответственно, они тоже будут работать.1012 *

Полагаю, вопрос здесь (да, я наконец-то дошел до этого): как лучше всего подойти к этому?

В идеальном мире я хотел бы иметь возможность иметь один файл XAML(на модуль), который содержит все RibbonTab, которые я хочу добавить в оболочку.Точно так же я хотел бы один XAML-файл для модуля, который содержит все элементы, которые я хочу добавить в RibbonApplicationMenu.Наконец, я хотел бы иметь возможность добавлять их с помощью RegionManager, как я делаю в настоящее время.

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

Ответы [ 2 ]

2 голосов
/ 12 января 2011

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

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

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

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

1 голос
/ 01 марта 2011

Вы можете найти код для RbbonRegionAdapter здесь . У меня это сработало.

...