Некоторое время назад я столкнулся с той же проблемой (но я использовал панель ленты Teleriks).Я не мог найти способ добавить вкладки из модулей или менее из XAML.
То, что я сделал, было такой услугой:
public class RibbonService
{
public PrioritySet<RibbonTab> Tabs { get; private set; }
public PrioritySet<object> QuickAccess { get; private set; }
public PrioritySet<ContextualGroup> ContextualGroup { get; private set; }
}
это предложение имеет следующую структуру:
Ключевым моментом здесь является класс PrioritySet, чтобы упростить его, это просто коллекция, в которой каждый элемент имеет связанный приоритет.
Теперь, еслиподобный сервис зарегистрирован на вашей платформе, затем из модулей вы можете добавить вкладки.Помните, что вашему проекту оболочки необходимо получить RibbonService, а затем привязать коллекцию элементов к свойству Tabs - обратите внимание, что PrioritySet реализует INotifyCollectionChanged, поэтому, если лента привязана, ее элементы будут обновляться автоматически.
Также с этимВы могли бы получить некоторые интересные вещи, как составление вкладок из сервиса.Например, одному модулю может потребоваться добавить только одну кнопку на ленте, это можно легко сделать, выполнив
_ribbonService.Tabs.Add(new RibbonButton(){Header = "Button", Icon = new Uri("icon.png")})
В моем приложении у меня есть вкладки> Группы> Кнопки, поэтому каждый модуль имеет полный контроль над лентой,Также обратите внимание, что из модулей вы можете добавить все элементы, которые вам нужны, но модуль не может удалить элемент с ленты, если у него есть ссылка на него или тот, который его создал.