Доступность команд
Контекст Visual Studio определяет доступные команды. Контекст может изменяться в зависимости от текущего проекта, текущего редактора, загруженных VSPackage и других аспектов интегрированной среды разработки (IDE).
Контексты команд
Наиболее распространенными являются следующие контексты команд:
Интегрированная среда разработки: команды, предоставляемые интегрированной среду разработки, всегда доступны.
VSPackage: VSPackages может определить, когда команды должны отображаться или скрыты.
Проект: команды project отображаются только для выбранного проекта.
Редактор: одновременно может быть активен только один редактор. Доступны команды активного редактора. Редактор тесно работает с языковой службой. Языковая служба должна обрабатывать свои команды в контексте связанного редактора.
Тип файла: редактор может загружать несколько типов файлов. Доступные команды могут изменяться в зависимости от типа файла.
Активное окно: последнее активное окно документа задает контекст пользовательского интерфейса для ключевых привязок. Однако окно инструментов с таблицей привязки ключей, похожей на внутренний веб-браузер, также может задать контекст пользовательского интерфейса. Для окон документов с несколькими вкладками, таких как редактор HTML, каждая вкладка имеет другой guid контекста команды. После регистрации окна инструмента оно всегда доступно в меню "Вид ".
Контекст пользовательского интерфейса: контексты пользовательского VSConstants.UICONTEXT интерфейса определяются значениями класса, например SolutionBuilding_guid при создании решения или Debugging_guid при активном отладчике. Одновременно несколько контекстов пользовательского интерфейса могут быть активными.
Определение пользовательских идентификаторов GUID контекста
Если соответствующий GUID контекста команды еще не определен, вы можете определить его в VSPackage, а затем запрограммировать его, чтобы быть активным или неактивным, как это необходимо для управления видимостью команд:
Зарегистрируйте идентификаторы GUID контекста GetCmdUIContextCookie , вызвав метод.
Получите состояние GUID контекста, вызвав IsCmdUIContextActive метод.
Включите и отключите идентификаторы guid контекста SetCmdUIContext , вызвав метод.
Внимание
Убедитесь, что VSPackage не влияет на существующие идентификаторы guid контекста, так как другие VSPackage могут зависеть от них.