Доступность команд

Контекст Visual Studio определяет доступные команды. Контекст может изменяться в зависимости от текущего проекта, текущего редактора, загруженных VSPackage и других аспектов интегрированной среды разработки (IDE).

Контексты команд

Наиболее распространенными являются следующие контексты команд:

  • Интегрированная среда разработки: команды, предоставляемые интегрированной среду разработки, всегда доступны.

  • VSPackage: VSPackages может определить, когда команды должны отображаться или скрыты.

  • Проект: команды project отображаются только для выбранного проекта.

  • Редактор: одновременно может быть активен только один редактор. Доступны команды активного редактора. Редактор тесно работает с языковой службой. Языковая служба должна обрабатывать свои команды в контексте связанного редактора.

  • Тип файла: редактор может загружать несколько типов файлов. Доступные команды могут изменяться в зависимости от типа файла.

  • Активное окно: последнее активное окно документа задает контекст пользовательского интерфейса для ключевых привязок. Однако окно инструментов с таблицей привязки ключей, похожей на внутренний веб-браузер, также может задать контекст пользовательского интерфейса. Для окон документов с несколькими вкладками, таких как редактор HTML, каждая вкладка имеет другой guid контекста команды. После регистрации окна инструмента оно всегда доступно в меню "Вид ".

  • Контекст пользовательского интерфейса: контексты пользовательского VSConstants.UICONTEXT интерфейса определяются значениями класса, например SolutionBuilding_guid при создании решения или Debugging_guid при активном отладчике. Одновременно несколько контекстов пользовательского интерфейса могут быть активными.

Определение пользовательских идентификаторов GUID контекста

Если соответствующий GUID контекста команды еще не определен, вы можете определить его в VSPackage, а затем запрограммировать его, чтобы быть активным или неактивным, как это необходимо для управления видимостью команд:

  1. Зарегистрируйте идентификаторы GUID контекста GetCmdUIContextCookie , вызвав метод.

  2. Получите состояние GUID контекста, вызвав IsCmdUIContextActive метод.

  3. Включите и отключите идентификаторы guid контекста SetCmdUIContext , вызвав метод.

Внимание

Убедитесь, что VSPackage не влияет на существующие идентификаторы guid контекста, так как другие VSPackage могут зависеть от них.