重载默认主题中的值,修改ProgressBar的前景色

做一个小项目时,用到 ProgressBar添加一个加载效果,但是背景不是白色的,调试时发现自己选的主题色与背景色相近,特别不清晰,加载效果几乎看不见,于是就要修改ProgressBar的前景色,在修改的过程中,发现直接修改 Foreground和定义Background没有效果,没什么用,ProgressBar的前景色是你选择的主题颜色,既然知道了主题色就是ProgressBar的颜色,接下来就是重载主题色,简单来说就是在项目中重新定义一个颜色,覆盖掉主题色,其实就是定义一个与系统资源字典中相同的样式,覆盖掉系统定义即可。 其他的需要重载默认主题中样式的做法与此类似

  1. 在某个页面中重载
  2. 在整个项目中重载
    1. 在App.xaml中重载
    2. 在自定义的资源字典中重载,需要将自定义的资源字典添加到

这里只讲解最后一个,在自定义的资源字典中重载,其实都差不多,不过个人觉得,这种方式更常用。

首先创建一个资源字典文件,然后再其中添加对系统主题色的重载(这里只是重载的ProgressBar的Foreground属性,即ProgressBar的颜色)

<!-- Global Overrides -->

<ResourceDictionary.ThemeDictionaries>

<ResourceDictionary x:Key="Default">

<x:String x:Key="ProgressBarIndeterminateForegroundThemeBrush">Pink</x:String>

</ResourceDictionary>

</ResourceDictionary.ThemeDictionaries>

注:这里的颜色不能随意设置,需要设置为主题色中有的颜色之一,最初设置的White 白色,结果没有任何效果

如果在App.xaml文件中或在页面中定义的话,添加以上代码就够了,如果在自定义资源字典文件中定义的话,需要在App.xaml文件中包含自定义的资源字典文件,在App.xaml文件添加以下代码即可 (source需要设置为自定义资源字典文件的路径)

<ResourceDictionary>

<ResourceDictionary.MergedDictionaries>

<ResourceDictionary Source="/Styles/CustomStyles.xaml"></ResourceDictionary>

</ResourceDictionary.MergedDictionaries>

</ResourceDictionary>

05-11 15:48