使用好處:存儲需要被本地話的內容(錯誤消息字符串等,實現軟編碼),減少重復的代碼,重用樣式,實現多個項目之間的共享資源;
修改一個地方所有引用的地方都會被修改,方便統一風格;
使用方法,歸納起來主要有下面幾個步驟:
a. 創建資源字典文件,
b. 資源字典集成
c. 使用字典中的資源
說明:在創建資源的時候要確保資源文件的編譯選項為page,這樣就能夠保證XAML資源文件最終能夠編譯為baml文件。但是如果設置為Resource也是一個不錯的選擇,這樣它能夠嵌入到程序集中,但是不被編譯,當然其解析的速度回稍微慢一點
資源文件分級:
系統性資源,一般會在app.xaml中集成;
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Test.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary>
窗體級資源;
<Window.Resources> <SolidColorBrush x:Key="FadeBrush" Color="Red"/> </Window.Resources>
文件級資源;在窗體中再將其注冊為窗體資源;
<Window.Resources> <ResourceDictionary Source="MyResouceDictionary.xaml"></ResourceDictionary> </Window.Resources>
對象控件級資源:定義在某個ContentControl ,作為子元素的共享資源;
<Button Grid.Row="0" Click="Button_Click" Background="{StaticResource FadeBrush}" > <Button.Resources> <SolidColorBrush x:Key="FadeBrush" Color="White" ></SolidColorBrush> </Button.Resources> <Button.Content> <TextBlock Background="{StaticResource FadeBrush}" >看我自己的顏色</TextBlock> </Button.Content> </Button>
文本框的背景顯示白色;
資源優先級:
具體引用時,從所在容器向上查找,比如有相同key值的系統資源和窗體級資源,那么使用窗體級資源;
對象級資源會覆蓋窗體級資源;
補充:
動態資源:在后台中可以修改動態資源,比較靈活,動態資源是從所在的控件向上查找;
靜態資源:系統開銷少,靜態資源是從所在的容器向上查找;
參考:http://www.cnblogs.com/tianyou/archive/2012/12/07/2806835.html
大胡子的 WPF經典教程.pdf