自定义项目类型Visual Studio中的自定义XAML设计器

本文关键字:自定义 XAML 项目 类型 Visual Studio | 更新日期: 2024-10-23 13:41:34

我制作了一个自定义XAML设计器http://code.msdn.microsoft.com/windowsdesktop/Designer-View-Over-XML-20a81f17我有一个问题:如何使自定义设计器只适用于某些类型的项目(例如自定义类型的项目),以及默认情况下设计器使用的所有其他项目。

在文件VsTemplateDesignerPackage.cs中有:

// Microsoft Visual Basic Project
[EditorFactoryNotifyForProject("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}", EditorFactory.Extension, GuidList.guidXmlChooserEditorFactory)]
// Microsoft Visual C# Project
[EditorFactoryNotifyForProject("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}", EditorFactory.Extension, GuidList.guidXmlChooserEditorFactory)]

我补充道:

//CustomProjectType
[EditorFactoryNotifyForProject("{GUID CustomProjectType}", EditorFactory.Extension, GuidList.guidXmlChooserEditorFactory)]

但它不起作用。这导致该扩展的自定义设计器用于所有类型的项目。

如何使自定义设计器仅在自定义项目中打开*.XAML文件?

自定义项目类型Visual Studio中的自定义XAML设计器

我认为在VSSDK中没有标准的方法可以做到这一点。设计器主要针对某个文件扩展名,并将在任何项目类型中为该文件扩展名调用设计器。

我想看看是否有一种方法可以在检查当前加载的项目类型后重定向或拒绝创建/实例化该编辑器的请求,或者为您的文件类型找到下一个内联编辑器,并创建它的实例并返回它。

不幸的是,我无法提供技术细节或代码,因为我上次接触任何VSSDK代码已经好几年了。