在我的vpackage中,我有一个用于EnvDTE上的WindowActivated事件的事件处理程序。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),但我想知道是否有更好的方法。
文件扩展名可能不是一个好主意,因为您也可以使用股票代码编辑器打开一个.XAML文件:-)
我能想到的最简单的方法是利用IVsMonitorSelection服务。
使用XAML设计器上下文guid {e9b8485c-1217-4277-b6d6-c825a5ac1968}调用GetCmdUIContextCookie(在组件诊断扩展中找到),然后调用IsCmdUIContextActive来确定设计器是否被激活。