哪里可以获取类似于Visual Studio 2010界面的WPF控件主题?

8
我的应用程序是基于AvalonDock构建的,它有非常好的Visual Studio 2010皮肤(比所有其他皮肤都要漂亮得多)。现在我想将我的应用程序的其余部分与之相配。我最感兴趣的是以下几个部分:
- 工具栏 - 我大多数情况下都能正确地设置颜色,但VS工具栏仍然更漂亮。 - (上下文)菜单 - VS使用橙色替换了蓝色菜单项焦点框,这使应用程序更加温暖和友好。 - 主窗口背景 - 这是AD没有做对的一件事。
这些样式是否在网络上某处?或者它们可以从VS中提取出来吗?
感谢任何帮助。
1个回答

13

当我有同样的需求时,我使用了Reflector(带有BAML Viewer插件)和这个颜色编辑器

VS控件的样式和模板位于路径(VS2010的路径)\Common7\IDE\en\, 必要的文件是Microsoft.VisualStudio.Shell.UI.Internal.resources.dll

如果在BAML Viewer中展开此库,将会有许多文件,但最有用的列在文件themes/generic.xaml中。

它们是:

  • Styles/MainWindowStyle.xaml - 主窗口的标记。
  • Styles/CommandMenuStyle.xaml - 菜单、工具栏、组合框的样式。
  • Styles/StandardContextMenuStyle.xaml - 上下文菜单的样式。

例如,如果打开MainWindowsStyle.xaml,你会找到这段代码:

<Setter x:Uid="Setter_26" Property="Background" Value="{DynamicResource {x:Static EnvironmentBackgroundGradientKey}}" />

现在安装VS颜色主题编辑器,在Visual Studio中打开Theme -> Customize Colors -> Default。 enter image description here 关键字EnvironmentBackgroundGradient在列表中有4个项目。它可以如下所示进行编写:

<LinearGradientBrush x:Key="EnvironmentBackgroundGradient" StartPoint="0.5,0" EndPoint="0.5,1">
    <GradientStop Color="#293955"/>
    <GradientStop Color="#35496a" Offset="0.5"/>
    <GradientStop Color="#35496a" Offset="0.5"/>
    <GradientStop Color="#293955" Offset="1"/>
</LinearGradientBrush>

可能这些颜色已经有详细的解释,但我没有找到,因此我使用了 Reflector。

其他有用的程序集:

  • en\Microsoft.VisualStudio.Platform.WindowManagement.resources.dll - TabControl 和 DockManager 的样式
  • PrivateAssemblies\Microsoft.VisualStudio.ExtensionsExplorer.UI.dll - 选择新项目

这里,是我之前实现的类似于 VS2010 样式的 TabControl 。它没有相同的功能,但外观相同。


我在哪里可以找到EnvironmentBackgroundGradientKey画刷的定义?它不是线性画刷,因为我认为它应该是VS窗口背景的深色点状纹理。 - Matěj Zábský
点是一种棘手的画笔,称为EnvironmentBackgroundTexture。我不知道它是如何创建的,它似乎是一种带有像骰子上的5那样的图案的DrawingBrush。 - vortexwolf
我在哪里可以找到 Microsoft.VisualStudio.ExtensionsExplorer.UI.dll? - fahadash
1
@fahadash c:\Program Files\Microsoft Visual Studio\Common7\IDE\PrivateAssemblies\。此外,您还可以使用Windows资源管理器的搜索菜单轻松找到它们。 - vortexwolf
@vorrtex 你在我的Win7上试试看,很糟糕。我花了一个小时搜索整个电脑,却什么也没找到,即使文件在那里。我认为它只会带来已经被索引的结果。很奇怪。 - fahadash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接