Поделиться через


Элемент Menu

Определяет один пункт меню. Это шесть типов меню: Контекст, Меню, MenuController, MenuControllerLatched, Панель инструментов и ToolWindowToolbar.

Синтаксис

<Menu guid="guidMyCommandSet" id="MyCommand" priority="0x100" type="button">
  <Parent>... </Parent>
  <CommandFlag>... </CommandFlag>
  <Strings>... </Strings>
</Menu>

Элементы и атрибуты

В следующих разделах описаны атрибуты, дочерние и родительские элементы.

Атрибуты

Атрибут Description
guid Обязательно. GUID идентификатора команды GUID/ID.
id Обязательно. Идентификатор идентификатора команды GUID/ID.
priority Необязательно. Числовое значение, указывающее относительную позицию меню в группе меню.
панель инструментовPriorityInBand Необязательно. Числовое значение, указывающее относительную позицию панели инструментов в полосе при закреплении окна.
type Необязательно. Перечисленное значение, указывающее тип элемента.

Если он отсутствует, тип по умолчанию — Menu.

Контекст
Контекстное меню, отображаемое, когда пользователь щелкает окно правой кнопкой мыши. Контекстное меню имеет следующие характеристики:

— Не использует поля "Родитель " и "Приоритет" , если меню должно отображаться в виде контекстного меню.
— Можно использовать в качестве подменю, а также в качестве контекстного меню. В этом случае учитывается как идентификатор группы, так и поля "Приоритет".
— не всегда доступно.

Контекстное меню отображается только в том случае, если заданы следующие условия:

— отображается окно, в котором он размещается.
— Обработчик мыши в VSPackage обнаруживает правой кнопкой мыши окно, а затем вызывает метод, обрабатывающий команду.
— Контекстное меню отображается путем вызова ShowContextMenu метода (рекомендуемого подхода) или ShowContextMenu метода.

Меню
Предоставляет раскрывающееся меню. Раскрывающееся меню имеет следующие характеристики:

— учитывает родительский элемент в своем определении.
— Должен иметь родительскую группу или CommandPlacement для группы.
— Может быть подменю в любом другом виде меню.
— автоматически отображается при отображении родительского меню.
— Не требует реализации любого кода VSPackage, чтобы он отображался.

MenuController
Предоставляет раскрывающееся меню с разделительной кнопкой, которое обычно используется на панелях инструментов. Меню MenuController имеет следующие характеристики:

— Должен содержаться в другом меню через Parent или CommandPlacement.
— учитывает родительский элемент в своем определении.
— Может иметь любое меню в качестве родительского элемента.
— автоматически становится доступным при отображении родительского меню.
— Не требует программной поддержки для отображения меню.

Команда из меню разделенной кнопки отображается в кнопке меню. Отображаемая команда имеет одну из следующих характеристик:

— Это последняя команда, которая использовалась, если команда по-прежнему отображается и включена.
— это первая отображаемая команда.

MenuControllerLatched
Предоставляет раскрывающееся меню с разделением кнопки, для которого можно указать команду в качестве выделенного по умолчанию, пометив команду как закрепленную.

Команда с блокировкой — это команда, помеченная в меню как выбранная, как правило, при отображении проверка метки. Команда может быть помечена как защепляемая, если на ней установлен флаг OLECMDF_LATCHED в реализации QueryStatus метода IOleCommandTarget интерфейса. Меню MenuControllerLatched имеет следующие характеристики:

— Должен содержаться в другом меню через родительскую группу или CommandPlacement.
— учитывает родительский элемент в своем определении.
— Может иметь любое меню в качестве родительского элемента.
— становится доступным всякий раз, когда отображается родительское меню.
— Не требует программной поддержки для отображения меню.

Команда из меню разделенной кнопки отображается в кнопке меню. Отображаемая команда имеет одну из следующих характеристик:

— Это первая отображаемая команда, которая зацепляется.
— это первая отображаемая команда.

Панель инструментов
Предоставляет панель инструментов. Панель инструментов имеет следующие характеристики:

— игнорирует родительский элемент в определении.
— Невозможно сделать подменю любой группы, даже не используя CommandPlacement.
— Всегда можно отобразить, щелкнув панели инструментов в меню "Вид ".
— Может отображаться с помощью ВидимостиItem.
— для создания кода не требуется. Пример создания панели инструментов см. в разделе "Добавление панели инструментов".

ToolWindowToolbar
Предоставляет панель инструментов, подключенную к определенному окну инструментов, так же как панель инструментов подключена к среде разработки.

— игнорирует родительский элемент в определении.
— Невозможно сделать подменю любой группы, даже не используя CommandPlacement.
— Отображается только в том случае, если окно инструментов, на котором размещена панель инструментов, отображается, а VSPackage явно добавляет панель инструментов в окно инструментов. Обычно это делается при создании окна инструментов путем получения свойства узла панели инструментов (как представлено IVsToolWindowToolbarHost интерфейсом) из кадра окна инструмента, а затем вызова AddToolbar метода.
Condition Необязательно. См . условные атрибуты.

Дочерние элементы

Элемент Description
Parent Необязательно. Родительский элемент элемента меню.
CommandFlag Обязательно. См . элемент флага command. Допустимые значения CommandFlag для меню приведены следующим образом:

- AlwaysCreate
- DefaultDocked
- DefaultInvisible — этот флаг не влияет на отображение панелей инструментов.
- DontCache
- DynamicVisibility — этот флаг не влияет на отображение панелей инструментов.
- IconAndText
- NoCustomize
- NotIn ТБ List
- NoToolbarClose
- TextChanges
- TextIsAnchorCommand
Строки Обязательно. См . элемент Strings. ButtonText Дочерний элемент должен быть определен.
Номер Необязательный комментарий.

Родительские элементы

Элемент Description
Элемент Menus Определяет все меню, которые реализует VSPackage.

Пример

<Menu guid="cmdGuidWidgetCommands" id="menuIDEditWidget"
  priority="0x0002" type="Menu">
  <Parent guid="cmdSetGuidWidgetCommands" id="groupIDFileEdit"/>
  <CommandFlag>AlwaysCreate</CommandFlag>
  <Strings>
    <ButtonText>Edit Widget</ButtonText>
  </Strings>
</Menu>

См. также