问题描述
在我的 VSPackage 中,我有一个用于 EnvDTE.WindowEvents 界面上的 WindowActivated 事件的事件处理程序。
在我的代码中,我检查激活的窗口是否是 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)中查看文件扩展名,但我想知道是否有更好的方法。
解决方法
文件扩展名可能不是一个好主意,因为您也可以使用股票代码编辑器打开 .XAML 文件:-)
我能想到的最简单的方法是利用 IVsMonitorSelection 服务。
使用 XAML 设计器上下文 guid {e9b8485c-1217-4277-b6d6-c825a5ac1968}(与 GetCmdUIContextCookie 一起找到)调用 Component Diagnostics extension,然后调用 IsCmdUIContextActive 以确定是否设计器已激活。