Wpf更改应用程序的颜色主题

时间:2017-08-30 08:24:27

标签: wpf themes skin systemcolors

我正在玩覆盖系统颜色以改变我的应用程序的颜色外观。 新系统颜色在单独的资源字典中定义,如下所示:

<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="#FF2D2D2D" />

并正确加载文件。 但是,如果我在“aero”和“classic”之间切换操作系统(Windows 7)的主题,则控件的外观会有所不同。例如。对于“经典”,应用程序的主要部分以深灰色(ControlBrushKey的颜色)出现(参见第一张图)。但是当我在“aero”处于活动状态时启动应用程序时,大多数应用程序仍然具有“中性”的空气动力外观(第二个数字)。 为什么会这样?无论选择什么主题,我都希望以相同的方式使用不同的SystemColors。

Windows theme "classic"

Windows theme "aero"

更改系统颜色是个好主意吗?或者你会推荐其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

  

问题是我不知道aero主题实际使用了哪些画笔。我将SystemColors的所有颜色都修改为深色,但没有区别。如何找出使用哪种刷子以及如何更换它们?

您可以查看默认模板的定义方式。下载dotPeek或其他一些.NET反编译器,并在PresentationFramework.*中反编译C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WPF\程序集。

您会在Resources - &gt; PresentationFramework.*.g.resources - &gt; themes下找到经过反编译的BAML资源。