[ELMA3] Элементы в Ribbon-оболочке приложения (панель инструментов и панель состояния)
Сервис управления Ribbon-оболочкой
Для добавления элементов в панель управления в рабочих элементах, унаследованных от RibbonChapterWorkItem или подчиненных им, доступен сервис IRibbonExtensionService:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 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 или его наследнику, необходимо импортировать сервис, объявив свойство:
1 2 3 4 5 6 7 8 9 | /// <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>().
Добавление элементов в панель состояния
Для добавления элементов в панель состояния нужно создать в коде нужные элементы и зарегистрировать их через сервис:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 }); |