WPF入门(六)样式Style
wpf提供了一種類似css的對象- style,但是比css更強大。它支持直接設定屬性,更改呈現模板,觸發器,事件觸發等。MSDN描述如下:
MSDN可以在從 FrameworkElement 或 FrameworkContentElement 派生的任何元素上設置 Style。樣式通常在 Resources 節內部聲明為資源。由于樣式是一種資源,它們遵循適用于所有資源的相同范圍規則,因此樣式的聲明位置將影響它的適用范圍。例如,如果在應用程序定義XAML 文件的根元素中聲明樣式,則該樣式可在應用程序中的任何位置使用。如果您在創建導航應用程序時在該應用程序的一個XAML 文件中聲明了樣式,則該樣式只能在該XAML 文件中使用。有關資源范圍規則的更多信息,請參見。
樣式聲明由 Style 對象構成,該對象包含由一個或多個 Setter 對象組成的集合。每個 Setter 都包含一個 Property 和一個 Value。屬性是樣式所應用于的元素的屬性名。將樣式聲明為資源后,就可以像引用任何其他資源一樣引用樣式。
?
使用 Windows Presentation Foundation (WPF) 樣式和模板化模型不僅可以維護和共享外觀,還可以讓呈現與邏輯分離。樣式和模板化模型包括一套允許您自定義UI 的功能。這套功能包括 Style 類以及下列組件:
-
Trigger
-
EventTrigger 以及 Storyboard
-
ControlTemplate
-
DataTemplate
?
下面代碼演示了 將button控件顯示成圓形,設置背景色等。
代碼 ?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要適用到的“類型”,我們可以在這里指向控件。如果一個style沒有 x:key 標記,那么它將適用在它的作用域下的所有控件類型。演示代碼第23行和42行演示了 顯式指定一個style的用法,值得一提的是,“如果顯式的為一個控件指定了style ,那么 這個style具有更高的優先權”。本例中第42行的button僅僅作用了一個style,全局的(第6行聲明的)style對它無效。
style的強大之處在這里體現,他可以更改一個控件的ControlTemplate,本例中 將一個矩形的button變成了橢圓。
style的trigger在上一篇文章里已經用到,本例就不再演示。
?
本節完
待續ing...
轉載于:https://www.cnblogs.com/vir56k/archive/2011/01/14/1935703.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的WPF入门(六)样式Style的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 会计的思考(3):通过公司例会制度加强财
- 下一篇: ASP.NET MVC 2.0