如何引用Visual Studio 2013的NewProjectDialog颜色的BrushKey / ColorKey?

基本上我正在创建一个带有对话框的VS2013扩展,该对话框应具有与New Project / Add Item对话框相同的布局和颜色。

它是一个对话框,在左窗格中显示代码生成模板,在中间窗格中显示当前解决方案中类型的树视图。

令我非常高兴的是,我找到了Microsoft.VisualStudio.PlatformUI.EnvironmentColors类,它包含许多用于在VS中引用主题颜色的颜色键,但不幸的是它不包含“New Project Dialog”类别的颜色,例如,可以在主题颜色编辑器的高级视图中的“NewProjectDialog”下查看和更改。 这些主题设置负责“新项目”,“添加项目”,Nuget包管理器和一些其他类似对话框的一致外观。

VS Extensibility UX准则实际上提到应该使用来自VsColors的主题颜色。 VsColors为明显未分类的颜色值导出一些属性,但不为NewProjectDialog类别导出。

稍微修补一下后,我通过枚举Microsoft.VisualStudio.Shell.VsColors.GetCurrentThemedColorValues()编程方式找到颜色,理论上我可以在代码隐藏中设置它们:

 var allColors = VsColors.GetCurrentThemedColorValues().Keys; var newProjColors = allColors.Where(c => c.Category == new Guid("c36c426e-31c9-4048-84cf-31c111d65ec0")); // guid extracted from an exported theme var newProjBgKey = newProjColors.SingleOrDefault(c => c.Name == "Background"); 

这似乎完全是倒退的,而且它使我的其他空的代码混乱变得混乱。

如何从XAML正确引用NewProjectDialog类别中的颜色?