logo

[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>().

Добавление элементов в панель инструментов

Для добавления элементов в панель инструментов нужно:

  1. Создать UserControl (например NewModuleRibbonPanel).
  2. Поместить в него панели (DevComponents.DotNetBar.RibbonBar) и кнопки (DevComponents.DotNetBar.ButtonItem).
  3. Задать имена команд и параметры (если необходимо): для панелей - в свойстве Tag, для кнопок - в свойстве CommandParameter. Параметр отделяется от имени команды точкой с запятой. Например SetZoom;100.
  4. Зарегистрировать элементы через метод 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 });