Как вы можете обнаружить окно дизайнера XAML в VSPackage

В моем пакете VSPackage у меня есть обработчик события WindowActivated в EnvDTE.WindowEvents.

В моем коде я проверяю, является ли активированное окно дизайнером WinForms (в VB.NET)

If TypeOf GotFocus.Object Is IDesignerHost Then
  ...
End if

или окно дизайнера ASP с

If TypeOf GotFocus.Object Is EnvDTE.HTMLWindow Then
  ...
End if

Как лучше всего определить, когда окно конструктора XAML активировано?

Конечно, я могу проверить расширение файла в подписи (GotFocus.Caption), но мне было интересно, есть ли лучший способ.


person Phil Jollans    schedule 31.01.2021    source источник


Ответы (1)


Расширение файла, вероятно, не очень хорошая идея, потому что вы также можете открыть файл .XAML с помощью стандартного редактора кода :-)

Самый простой способ, который я могу придумать, - это использовать IVsMonitorSelection сервис.

Вызовите GetCmdUIContextCookie с контекстный справочник конструктора XAML {e9b8485c-1217-4277-b6d6-c825a5ac1968} (найден с помощью Расширение диагностики компонентов), а затем вызовите IsCmdUIContextActive, чтобы определить, активирован ли конструктор.

person Ed Dore    schedule 03.02.2021