Можно ли назначить сочетания клавиш командам пакета расширяемости Visual Studio 2012, которые используют DynamicItemStart?
У меня есть пакет расширяемости VS2012, который добавляет команды в меню, используя DynamicItemStart
флаг команды, как описано в MSDN. Эти команды немного похожи на встроенную функцию внешних инструментов, поэтому точный набор настраивается пользователем надстройки, а не определяется мной. DynamicItemStart
Команда кажется наиболее подходящей для этого.
Согласно примеру, я добавляю несколько элементов, скрываю их, а затем управляю видимостью, используя BeforeQueryStatus
Перезвоните. Похоже, все это работает: пункты меню отображаются точно так, как я ожидал, и вы можете вызвать их, щелкнув их мышью. Мой пакет также имеет одну фиксированную команду, и это тоже работает.
Моя нединамическая команда также появляется в списке команд в разделе "Инструменты | Параметры", "Клавиатура", поэтому вы можете создать для нее сочетание клавиш. (Вы также можете вызвать его из окна Immediate, в котором, похоже, используется тот же список.) Но мои динамические команды не отображаются! Я ожидал, что они появятся как некий автоматически сгенерированный список, например Tools.ExternalCommand
,
Являются DynamicItemStart
Команды просто не могут быть вызваны таким образом?
1 ответ
В случае, если другой человек с этой проблемой найдет этот вопрос...
DynamicItemStart
Насколько мне известно, команды не имеют имен. В документах говорится, что они предназначены для MRU или списков окон, поэтому, возможно, никто не думал, что кому-то нужно будет их называть.
Итак, для моих целей я просто создал 100 команд-заполнителей (Command00
... Command99
), настройка DynamicVisibility
а также TextChanges
Командные флаги для каждого. (Теперь у меня есть файл VSCT на 1237 строк.)
Затем во время выполнения я использую BeforeQueryStatus
обратный вызов, чтобы скрыть неиспользуемые элементы, показать использованные элементы и установить их (назначенные пользователем) заголовки для меню. И мой пользовательский интерфейс старается показать, какая команда соответствует каждому назначенному действию, и сохранить соответствие без изменений, чтобы пользователь знал, какое из 100 имен команд использовать при назначении сочетаний клавиш для каждого из их действий.
Это вряд ли идеально, и немного раздражает ограничение в Visual Studio. Но похоже, что он будет работать адекватно.