WPF ResourceDictionary的使用

做用:一個應用程序中,某個窗口須要使用樣式,可是樣式很是多,寫在一個窗口中代碼分類不方便。最好Style寫在專門的xaml文件中,而後引用到窗口中,就像HTML引用外部css文件同樣。css

初衷:就在於能夠實現多個項目之間的共享資源,資源字典只是一個簡單的XAML文檔,該文檔除了存儲但願使用的資源以外,不作任何其它的事情。app

1.  建立資源字典佈局

      建立資源字典的過程比較簡單,只是將須要使用的資源全都包含在一個xaml文件之中便可。以下面的例子(文件名test.xaml,與後面的app.xaml文件中的內容相對應):this

<?xml version="1.0" encoding="utf-8"?>編碼

<!--This file is auto generated by XDraw.-->spa

<!--Do not modify this file directly, or your changes will be overwritten.-->xml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">utf-8

    <LinearGradientBrush x:Key="FadeBrush">資源

       <GradientStop Color="Red" Offset="0"/>文檔

       <GradientStop Color="Gray" Offset="1"/>

    </LinearGradientBrush>

</ResourceDictionary>

說明:在建立資源的時候要確保資源文件的編譯選項爲page,這樣就可以保證XAML資源文件最終可以編譯爲baml文件。可是若是設置爲Resource也是一個不錯的選擇,這樣它可以嵌入到程序集中,可是不被編譯,固然其解析的速度回稍微慢一點。

 

2.  使用資源字典

2.1  集成資源

     要是用資源字典,首先要將資源字典集成到應用程序的某些資源集合中。通常的作法都是在app.xaml文件中進行集成。代碼以下:

    <ResourceDictionary>

            <ResourceDictionary.MergedDictionaries>

                <ResourceDictionary Source="Test.xaml"/>

            </ResourceDictionary.MergedDictionaries>

        </ResourceDictionary>

2.2  使用資源

     集成以後就能夠在當前的工程中使用這些資源了。使用方法以下:

<Window x:Class="HelloWpf.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="MainWindow" Height="340" Width="406" WindowStartupLocation="CenterScreen"

        Icon="SC.ico" >

   

    <Grid Height="304" Width="374">

        <Grid.RowDefinitions>

            <RowDefinition Height="Auto"/>

            <RowDefinition Height="Auto"/>

            <RowDefinition Height="*"/>

        </Grid.RowDefinitions>

 

        <Button Margin="121,30,107,230" Grid.Row="2" Click="Button_Click"  Background="{StaticResource FadeBrush}">

        </Button>

    </Grid>

</Window>

使用資源的方法比較簡單隻須要使用StaticResource 關鍵字去添加便可。

2.1內部集成

或者內部集成在窗口中引用外部資源,注意:在Window中添加外部樣式須要指定key,而Application中則不須要,因此這裏FadeBrush就是引用外部樣式test.xaml的key

<Window x:Class="MSSQLDocCreator.MainWindow"  

       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  

       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  

       xmlns:local="clr-namespace:MSSQLDocCreator"  

       Title="MainWindow" Height="602" Width="425" WindowStartupLocation="CenterScreen">  

       <Window.Resources>  

       <ResourceDictionary x:Key="FadeBrush">  

       <ResourceDictionary.MergedDictionaries>  

        <ResourceDictionary Source="test.xaml" />  

        </ResourceDictionary.MergedDictionaries>  

       </ResourceDictionary>  

       </Window.Resources>  

        ....   

      </Window>  

    將樣式應用到窗口的佈局上

    <Grid Resources="{StaticResource rdStyle}">   

    </Grid>   

3.  總結:

     使用資源字典的主要緣由有兩個:

    a. 提供皮膚功能。

    b. 存儲須要被本地話的內容(錯誤消息字符串等,實現軟編碼)

     使用過程也比較簡單,概括起來主要有下面幾個步驟:

    1. 建立資源字典文件

    2. 資源字典集成

    3. 使用字典中的資源

相關文章
相關標籤/搜索