WPF入门(六)样式Style
wpf提供了一種類(lèi)似css的對(duì)象- style,但是比css更強(qiáng)大。它支持直接設(shè)定屬性,更改呈現(xiàn)模板,觸發(fā)器,事件觸發(fā)等。MSDN描述如下:
MSDN可以在從 FrameworkElement 或 FrameworkContentElement 派生的任何元素上設(shè)置 Style。樣式通常在 Resources 節(jié)內(nèi)部聲明為資源。由于樣式是一種資源,它們遵循適用于所有資源的相同范圍規(guī)則,因此樣式的聲明位置將影響它的適用范圍。例如,如果在應(yīng)用程序定義XAML 文件的根元素中聲明樣式,則該樣式可在應(yīng)用程序中的任何位置使用。如果您在創(chuàng)建導(dǎo)航應(yīng)用程序時(shí)在該應(yīng)用程序的一個(gè)XAML 文件中聲明了樣式,則該樣式只能在該XAML 文件中使用。有關(guān)資源范圍規(guī)則的更多信息,請(qǐng)參見(jiàn)。
樣式聲明由 Style 對(duì)象構(gòu)成,該對(duì)象包含由一個(gè)或多個(gè) Setter 對(duì)象組成的集合。每個(gè) Setter 都包含一個(gè) Property 和一個(gè) Value。屬性是樣式所應(yīng)用于的元素的屬性名。將樣式聲明為資源后,就可以像引用任何其他資源一樣引用樣式。
?
使用 Windows Presentation Foundation (WPF) 樣式和模板化模型不僅可以維護(hù)和共享外觀,還可以讓呈現(xiàn)與邏輯分離。樣式和模板化模型包括一套允許您自定義UI 的功能。這套功能包括 Style 類(lèi)以及下列組件:
-
Trigger
-
EventTrigger 以及 Storyboard
-
ControlTemplate
-
DataTemplate
?
下面代碼演示了 將button控件顯示成圓形,設(shè)置背景色等。
代碼 ?1?<Window?x:Class="wpfAppStyleDemo.Window1"?2?????xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
?3?????xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
?4?????Title="Window1"?Height="371"?Width="550">
?5?????<Window.Resources>
?6?????????<Style?TargetType="Button">
?7?????????????<!--Set?to?true?to?not?get?any?properties?from?the?themes.-->
?8?????????????<Setter?Property="OverridesDefaultStyle"?Value="True"/>
?9?????????????<Setter?Property="Background"?Value="LightBlue"?/>
10?????????????<Setter?Property="Template">
11?????????????????<Setter.Value>
12?????????????????????<ControlTemplate?TargetType="Button">
13?????????????????????????<Grid>
14?????????????????????????????<Ellipse?Fill="{TemplateBinding?Background}"/>
15?????????????????????????????<ContentPresenter?HorizontalAlignment="Center"
16?????????????????????????????VerticalAlignment="Center"/>
17?????????????????????????</Grid>
18?????????????????????</ControlTemplate>
19?????????????????</Setter.Value>
20?????????????</Setter>
21?????????</Style>
22?
23?????????<Style?TargetType="Button"?x:Key="btnStyle1">
24?????????????<Setter?Property="Background"?Value="#66FF33"/>
25?????????</Style>
26?
27?????????<Style?TargetType="{x:Type?TextBlock}">
28?????????????<Setter?Property="FontFamily"?Value="Segoe?Black"?/>
29?????????????<Setter?Property="HorizontalAlignment"?Value="Center"?/>
30?????????????<Setter?Property="FontSize"?Value="9pt"?/>
31?????????????<Setter?Property="Foreground"?Value="#333333"?/>
32?????????????<Setter?Property="Background"?Value="Yellow"?/>
33?????????</Style>
34?
35?????</Window.Resources>
36?????<Grid>
37?????????<Grid.ColumnDefinitions>
38?????????????<ColumnDefinition?Width="277*"?/>
39?????????????<ColumnDefinition?Width="251*"?/>
40?????????</Grid.ColumnDefinitions>
41?????????<Button?Height="23"?HorizontalAlignment="Left"?Margin="44,79,0,0"?Name="button1"?VerticalAlignment="Top"?Width="75">Button</Button>
42?????????<Button?Style="{StaticResource?btnStyle1}"?Height="23"?HorizontalAlignment="Right"?Margin="0,79,47,0"?Name="button2"?VerticalAlignment="Top"?Width="75">Button</Button>
43?????????<TextBlock?Margin="75,140,93,156"?Name="textBlock1">
44?????????????WPF演示,Style樣式
45?????????</TextBlock>
46?????</Grid>
47?</Window>
48?
?
注意 sytle 的作用域 TargetType指定了style要適用到的“類(lèi)型”,我們可以在這里指向控件。如果一個(gè)style沒(méi)有 x:key 標(biāo)記,那么它將適用在它的作用域下的所有控件類(lèi)型。演示代碼第23行和42行演示了 顯式指定一個(gè)style的用法,值得一提的是,“如果顯式的為一個(gè)控件指定了style ,那么 這個(gè)style具有更高的優(yōu)先權(quán)”。本例中第42行的button僅僅作用了一個(gè)style,全局的(第6行聲明的)style對(duì)它無(wú)效。
style的強(qiáng)大之處在這里體現(xiàn),他可以更改一個(gè)控件的ControlTemplate,本例中 將一個(gè)矩形的button變成了橢圓。
style的trigger在上一篇文章里已經(jīng)用到,本例就不再演示。
?
本節(jié)完
待續(xù)ing...
轉(zhuǎn)載于:https://www.cnblogs.com/vir56k/archive/2011/01/14/1935703.html
超強(qiáng)干貨來(lái)襲 云風(fēng)專(zhuān)訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的WPF入门(六)样式Style的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 会计的思考(3):通过公司例会制度加强财
- 下一篇: 解决ubuntu上网慢