[ELMA3] Элементы в Ribbon-оболочке приложения (панель инструментов и панель состояния)
Сервис управления Ribbon-оболочкой
Для добавления элементов в панель управления в рабочих элементах, унаследованных от RibbonChapterWorkItem или подчиненных им, доступен сервис IRibbonExtensionService:
namespace EleWise.ELMA.Design.CompositeUI.Services { /// <summary> /// Сервис расширения для визуальных элементов Ribbon-оболочки, привязанных к текущему разделу /// </summary> public interface IRibbonExtensionService { /// <summary> /// Ribbon-панель /// </summary> RibbonPanel RibbonPanel { get; } /// <summary> /// Биндер команд к элементам управления /// </summary> CommandBinder CommandBinder { get; } /// <summary> /// Добавить Ribbon-панели, содержащиеся в контроле с указанным типом /// </summary> /// <typeparam name="TControl">Тип контрола, содержащего Ribbon-панели</typeparam> void AddRibbonBars<TControl>() where TControl : Control; /// <summary> /// Добавить Ribbon-панели, содержащиеся в контроле /// </summary> /// <param name="control">Контрола, содержащего Ribbon-панели</param> void AddRibbonBars(Control control); /// <summary> /// Добавить Ribbon-панель /// </summary> void AddRibbonBar(RibbonBar bar); /// <summary> /// Добавить элементы в панель состояния /// </summary> /// <param name="items">Элементы</param> void AddStatusBarItems(BaseItem[] items); /// <summary> /// Выполнить раскладку визуальных элементов (для корректного отображения после изменения элементов) /// </summary> void PerformLayout(); } }
В рабочих элементах, унаследованных от RibbonChapterWorkItem доступно свойство RibbonExtensionService после инициализации рабочего элемента.
Для получения доступа к сервису в элемента, подчиненных RibbonChapterWorkItem или его наследнику, необходимо импортировать сервис, объявив свойство:
/// <summary> /// Импорт сервиса управления Ribbon-оболочкой /// </summary> ServiceDependency public IRibbonExtensionService RibbonExtensionService { get; set; }
либо в коде через Services.Get<IRibbonExtensionService>().
Добавление элементов в панель инструментов
Для добавления элементов в панель инструментов нужно:
- Создать UserControl (например NewModuleRibbonPanel).
- Поместить в него панели (DevComponents.DotNetBar.RibbonBar) и кнопки (DevComponents.DotNetBar.ButtonItem).
- Задать имена команд и параметры (если необходимо): для панелей - в свойстве Tag, для кнопок - в свойстве CommandParameter. Параметр отделяется от имени команды точкой с запятой. Например SetZoom;100.
- Зарегистрировать элементы через метод RibbonExtensionService.AddRibbonBars<NewModuleRibbonPanel>().
Добавление элементов в панель состояния
Для добавления элементов в панель состояния нужно создать в коде нужные элементы и зарегистрировать их через сервис:
zoomSpace = new LabelItem(); zoomSpace.Name = "lblOrgZoomSpace"; zoomSpace.Text = ""; zoomSpace.Stretch = true; zoomSpace.CommandParameter = OrganizationCommands.Zoom.Group; zoomSlider = new SliderItem(); zoomSlider.Name = "slOrgZoom"; zoomSlider.Width = 155; zoomSlider.LabelWidth = 55; zoomSlider.LabelVisible = true; zoomSlider.Text = "100 %"; zoomSlider.Visible = true; zoomSlider.CommandParameter = OrganizationCommands.Zoom.SetZoom; zoomSlider.Minimum = 20; zoomSlider.Maximum = 200; zoomSlider.Value = 100; RibbonExtensionService.AddStatusBarItems(new BaseItem[] { zoomSpace, zoomSlider });