標籤:windows phone 8.1 重載系統主題色 重載系統資源 修改progressbar的前景色彩for
在應用設計過程中,我們總是設計好應用各塊的布局和顏色的分配。當然這隻是我們的一廂情願,當我們真正開始
CD的時候,這才發現預想總是很美好的,實際操作起來確實有些難度。當然對於經驗老道的程式員來說,這點阻礙
並不算什麼。
正如題目所說,微軟已經給我們設定了各種各樣的系統預設資源,特別在是對於控制項的一些屬性,有的時候我們可以
直接定義屬性來覆蓋掉,而有的時候我們定義了屬性依然毫無作用,這個時候我們就需要重載它的預設主題值。
好了,上面廢話一大堆,下面就讓我們來看看到底有多少預設的佈景主題資源:
這裡以ProgressBar為例,因為對於這個控制項,你一廂情願的設定它的foreground和background值好像並不起作
用,它還是它,並不會那麼乖就聽你的命令。
首先在ProgressBar的設定選項卡中調出Foreground屬性,點擊它的設定選項,然後你會看到它提供給你多種設定的
方法,這裡我們將滑鼠移到系統資源上面。
你會發現會跳出很多很多的系統定義資源,上下滾動查看,乖乖,確實是蠻多的。所以說在今後如果不知道系統資源
定義的key值,你就可以這麼做。
知道了系統預設資源以及如何查看,那麼接下來就要重載它了。這裡依舊是拿ProgressBar控制項為例。
我要把ProgressBar的Foreground設定成Green,而這邊我要重載的系統預設佈景主題資源是
ProgressBarIndeterminateForegroundThemeBrush這個系統資源。當然如果你不知道具體是哪個,對於這個控制項的
系統預設資源定義並不多,你可以一個一個試試,不行就去MSDN查一下具體是哪個也行。
步驟一:
在項目中建立一個資源字典,重載佈景主題資源,如下:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:RedefineProgressBarColor"> <ResourceDictionary.ThemeDictionaries> <ResourceDictionary x:Key="Default"> <x:String x:Key="ProgressBarIndeterminateForegroundThemeBrush">Green</x:String> </ResourceDictionary> </ResourceDictionary.ThemeDictionaries> </ResourceDictionary>
步驟二:
然後在App.xaml中包含這個資源字典,如下:
<Application x:Class="RedefineProgressBarColor.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:RedefineProgressBarColor"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="RedefineDictionary.xaml"></ResourceDictionary> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </Application>
步驟三:
在頁面拖進來一個ProgressBar控制項,運行一下就能發現它的Foreground變成了你設定的Green,而原來你如果不重
載這個系統資源屬性,那麼Foreground預設值就不一定是Green了。而如果你不重載,只是重複設定它的Foreground
值,那麼它不會理會你,依然顯示系統預設的資源屬性。
以上就是本次部落格的主要內容。這裡要補充三點:
1.對於上述說法,有些人可能有一些疑問,你說系統預設主題的顏色到底是什麼呢。很好,這個問題要這麼
看,Foreground顏色(前景色彩)是和你的手機設定的主題色是一致的,而對於很多其他的控制項,很多問題都是出在這個
手機主題色上面的。所以我們的手機主題色就是預設的主題色了,而因為每個人用手機的習慣不一樣,所以為了應用
的統一性,這才需要我們自行設定。
具體如下所示:
2.上面對於樣式資源的申明和綁定設定,只是其中的一種方法,還有其他很多種方法,這次部落格中的樣式屬性設定是
對之前一篇部落格的補充。
之前一篇部落格: win8,win8.1應用中產生顯示button和button背景圖片的三,四種方法以及改變元素樣式的四種方法
3.這裡我沒有設定ProgressBar的Background,一來大家可以具體自行嘗試,舉一反三;二來我認為毫無必要,因為
它本身應該是透明的,如果非要設定的話就會突出那一塊顏色,毫無美感而言。
Windows Phone 8.1中如何重載系統預設資源