/// <summary>
/// Получение элементов управления на ленте по идентификатору
/// </summary>
/// <param name="itemId">Идентификатор элемента управления</param>
/// <param name="activeTabOnly">
/// True - только активные вкладки, false - все вкладки
/// </param>
/// <returns>
/// Массив найденных на ленте элементов с указанным идентификатором.
/// Если не найдены - пустой массив. Если лента не загружена - null.
/// </returns>
public static RibbonItem[] GetAllItems(string itemId, bool activeTabOnly)
{
// Список для сбора элементов
List<RibbonItem> itemsList = new List<RibbonItem>();
// Объект ленты
RibbonControl ribCntrl = Autodesk.Windows.ComponentManager.Ribbon;
// Если лента не загружена
if (ribCntrl == null)
{
return null;
}
// Вкладки ленты
IEnumerable<RibbonTab> tabs = activeTabOnly ?
ribCntrl.Tabs.Where(item => item.IsActive)
: ribCntrl.Tabs;
// Проходим по вкладкам ленты
foreach (RibbonTab ribTab in tabs)
{
// Проходим по панелям вкладки
foreach (RibbonPanel panel in ribTab.Panels)
{
// Ищем на панели элемент с заданным идентификатором
RibbonItem ribItem = panel.FindItem(itemId, true);
// Если нашли
if (ribItem != null)
{
// Добавляем в список
itemsList.Add(ribItem);
}
}
}
return itemsList.ToArray();
}