天天看點

WPF 中style檔案的引用

原文:

WPF 中style檔案的引用

總結一下WPF中Style樣式的引用方法:

一,内聯樣式:

直接設定控件的Height、Width、Foreground、HorizontalAlignment、VerticalAlignment等屬性。以設定一個Botton控件的樣式為例,如:

複制代碼

<Grid x:Name="ContentPanel" >

<Button Content="Button" Name="btnDemo"

Height="72"

Width="150"

Foreground="White"

Background="Blue"

HorizontalAlignment="Left"

VerticalAlignment="Top"

Margin="170,132,0,0"

Grid.Row="1" />

</Grid>

這種方式比較簡單,但是代碼不能複用。

二,嵌入樣式:

在頁面<Window.Resources>節點下添加樣式,然後在需要的控件上設定Style屬性。還是以上面那個Botton控件為例。

1,在頁面<Window.Resources>節點下添加一個Key值叫“myBtnStyle”的樣式

<Window.Resources>

<Style x:Key="myBtnStyle" TargetType="{x:Type Button}">

<Setter Property="Height" Value="72" />

<Setter Property="Width" Value="150" />

<Setter Property="Foreground" Value="Red" />

<Setter Property="Background" Value="Black" />

<Setter Property="HorizontalAlignment" Value="Left" />

<Setter Property="VerticalAlignment" Value="Top" />

</Style>

</Window.Resources>

2, 設定Botton控件的Style屬性為"{StaticResource BtnStyle}"

Style="{StaticResource BtnStyle}"/>

解釋一下,TargetType="{x:Type Button}"指定了該樣式适用于Botton類型的控件,Key="myBtnStyle"如果不設定該值,則該樣式将适用于所有的Botton控件,而設定了其值為“myBtnStyle”,則隻用于設定了

Style="{StaticResource

myBtnStyle}"的Botton控件。這就好比CSS中的元素選擇器和類選擇器。

這種方式可以使得單個頁面上的控件能夠複用一個樣式,比第一種方式面向對象了一步。

三,外聯樣式:

1,建立一個.xaml資源檔案,如/Theme/Style.xaml

2, 在Style.xaml檔案裡編寫樣式代碼

Style.xaml:

<ResourceDictionary

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

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

xmlns:System="clr-namespace:System;assembly=mscorlib">

<Style x:Key="myBtnStyle" TargetType="Button">

<Setter Property="Foreground" Value="White" />

<Setter Property="Background" Value="Blue" />

</ResourceDictionary>

3,在App.xaml檔案的<Application.Resources>

或者普通頁面的<Window.Resources>

或者使用者控件的 <UserControl.Resources> 節點下

添加相應的ResourceDictionary,配置引用Style.xaml:

app.xaml:

<Application.Resources>

<ResourceDictionary>

<ResourceDictionary.MergedDictionaries>

<ResourceDictionary Source="/應用名稱;component/Theme/Style.xaml"/>

<!--<ResourceDictionary Source="Resources/BtnStyle2.xaml"/>

</ResourceDictionary.MergedDictionaries>

</Application.Resources>

或者MainWindow.xaml:

<ResourceDictionary Source="Theme/BtnStyle.xaml"/>

<ResourceDictionary.MergedDictionaries>節點下可以添加多個資源檔案

這種方式相比前面兩種使得樣式和結構又更進一步分離了。

在App.xaml引用,是全局的,可以使得一個樣式可以在整個應用程式中能夠複用。在普通頁面中引用隻能在目前頁面上得到複用。

4, 設定Botton控件的Style屬性為"{StaticResource myBtnStyle}" 和上面的一樣。

四,用C#代碼動态加載資源檔案并設定樣式

1,建立資源檔案:同上面的1,2兩步。

2,在背景編寫代碼

ResourceDictionary resourceDictionary =newResourceDictionary();

Application.LoadComponent(resourceDictionary, new Uri("/PhoneApp1;component/Resources/BtnStyle.xaml", UriKind.Relative));

Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);

//以上幾行代碼表示将我們自定義的樣式加載到應用程式的資源字典中。

this.btnDemo.SetValue(Button.StyleProperty, Application.Current.Resources["BtnStyle"]);

各位大蝦見笑了,呵呵!!!