重載默認主題中的值,修改ProgressBar的前景色
做一個小項目時,用到 ProgressBar添加一個加載效果,但是背景不是白色的,調試時發現自己選的主題色與背景色相近,特別不清晰,加載效果幾乎看不見,于是就要修改ProgressBar的前景色,在修改的過程中,發現直接修改 Foreground和定義Background沒有效果,沒什么用,ProgressBar的前景色是你選擇的主題顏色,既然知道了主題色就是ProgressBar的顏色,接下來就是重載主題色,簡單來說就是在項目中重新定義一個顏色,覆蓋掉主題色,其實就是定義一個與系統資源字典中相同的樣式,覆蓋掉系統定義即可。 其他的需要重載默認主題中樣式的做法與此類似
- 在某個頁面中重載
-
在整個項目中重載
- 在App.xaml中重載
- 在自定義的資源字典中重載,需要將自定義的資源字典添加到
這里只講解最后一個,在自定義的資源字典中重載,其實都差不多,不過個人覺得,這種方式更常用。
首先創建一個資源字典文件,然后再其中添加對系統主題色的重載(這里只是重載的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>
文章列表