修改ProgressBar的前景色
做一个小项目时,用到 ProgressBar添加一个加载效果,但是背景不是白色的,调试时发现自己选的主题色与背景色相近,特别不清晰,加载效果几乎看不见,于是就要修改ProgressBar的前景色,在修改的过程中,发现直接修改 Foreground和定义Background没有效果,没什么用,ProgressBar的前景色是你选择的主题颜色,既然知道了主题色就是ProgressBar的颜色,接下来就是重载主题色,简单来说就是在项目中重新定义一个颜色,覆盖掉主题色,其实就是定义一个与系统资源字典中相同的样式,覆盖掉系统定义即可。
这里只讲解最后一个,在自定义的资源字典中重载,其实都差不多,不过个人觉得,这种方式更常用。
首先创建一个资源字典文件,然后再其中添加对系统主题色的重载(这里只是重载的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>