1. 程式人生 > >WPF之樣式——style

WPF之樣式——style

很難 emp private target void dict 右鍵 所有 winform

wpf這門編寫winform程序的技術相比常規的winform技術有一個很顯著的特點——

怎麽才能炫起來呢?

我們都知道常規的winform技術就是拖控件,總的來說想用常規的winform技術來實現很好看的界面很難。

但是wpf就可以實現起來很輕松。

有過web知識的童鞋很好理解,咱們看到的網站大部分都比winfrom好看的多,為啥?

因為裏面所有的控件都是程序人員拿HTML編寫的,編程人員可以自由的定義控件的樣式。我們的WPF一樣可以輕松的定義控件的樣式。

下面我們一起來體驗一下:

我們建立一個WFP項目,打開它的MainWindow.xaml窗體文件:

技術分享

加入一個按鈕標簽:

<Button>提交</Button>

運行結果……

技術分享

大家看到了這個按鈕擴充到了整個窗體大小(如果你的控件沒有定義大小,它就會自己填充滿它所在的容器)。

接下來我為按鈕寫一個Style,在項目中新建一個Style文件夾。在Style文件夾處右鍵添加新項,選擇資源詞典:

技術分享

打開我們添加的資源詞典:

技術分享

然後再添加一個資源詞典。改一下名字,叫Index.xaml

wpf這門技術是這樣的:把所有的資源詞典都配置在Index.xaml資源詞典文件中,然後將Index.xaml資源詞典文件配置在項目的App.xaml文件中,這樣項目中所有的資源都可以在項目中引用了

PS:就不用單個窗體配置資源詞典了。(將資源公開化)

我們在Dictionary1.xaml文件中鍵入一個Button的樣式:

<Style x:Key="m_Btn" TargetType="{x:Type Button}">
<Setter Property="Width" Value="40"></Setter>
<Setter Property="Height" Value="20"></Setter>
<Setter Property="HorizontalAlignment" Value="Center"></Setter>
<Setter Property="VerticalAlignment" Value="Center"></Setter>


<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Image Source="/Bind;Component/Images/4.png"></Image>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

下面我們解釋下上面的樣式:

1、

<Style x:Key="m_Btn" TargetType="{x:Type Button}">這一句中的x:Key="m_Btn"的意思是給這個樣式起一個名字。以後控件要用這個樣式直接將m_Btn這個名字付給控件就好了。

TargetType="{x:Type Button}"這一句的意思是什麽類型的控件可以用這個樣式。

2、

<Setter Property="" Value=""></Setter>這一句的意思是設置Property屬性,屬性的值是Value。

3、

<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Image Source="/Bind;Component/Images/4.png"></Image>
</ControlTemplate>
</Setter.Value>
</Setter>

這一段的意思是設置屬性Template,為什麽他的value沒有跟在後面反而又寫了一行呢?

因為它的value值比較復雜,一行裝不下。

<ControlTemplate TargetType="Button">這就是屬性Template的value值(一個ControlTemplate ),它的內容是一個Image圖片標簽,大家註意下Image標簽Source屬性的值:/Bind;Component/Images/4.png,這是wpf種相對路徑的寫法——(/項目名稱;Component/url)

好了,我們在Dictionary1.xaml文件中寫好了一個button的樣式,將它放入Index.axml中:

在Index.xaml中鍵入

<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Bind;Component/Style/Dictionary1.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>

再將Index.xaml配置在APP.xaml中:

<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source=""/Bind;Component/Style/Index.xaml">
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

至此我們完成了一個常規的資源詞典的引用方式。如果有更多的資源字典,直接配置在Index.axml文件中,這樣整個項目都可以應用你所定義的樣式了。

下面,我們將寫好的樣式應用於BUtton.打開MainWindow.xaml文件,修改Button標簽為:

<Button Style="{StaticResource m_Btn}" Click="Button_Click">提交</Button>

後臺添加Button的單擊事件的處理方法:

private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("豪車");
}

運行程序,單擊豪車的圖片(其實就是按鈕):

技術分享

好了,一個簡單的帶有樣式的按鈕程序我們就寫好了,是不是比傳統的按鈕要好看很多……

WPF之樣式——style