如何在vpackage中检测XAML设计器窗口?



在我的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来确定设计器是否被激活。

最新更新