& ltsetter Property = \" Background \" Val" />
類似於Web應用中的CSS,在WPF中可以為控件定義統壹的樣式。樣式屬於壹種資源,例如為按鈕定義統壹的背景顏色和字體:
& lt窗戶。資源& gt
& ltStyle TargetType="Button " >
& ltsetter Property = " Background " Value = " Yellow "/& gt;
& lt/Style & gt;
& lt/窗口。資源& gt
& ltStackPanel & gt
& ltButton & gt按鈕A & lt/Button & gt;
& lt/stack panel & gt;
Style中定義的屬性和值會影響Window中Button類型的所有控件的樣式。
這種樣式類似於CSS中的類型選擇器,為某種類型定義樣式。
另外,可以將x:Key屬性作為特定樣式添加到樣式中(註意這也需要定義target type);
基於第壹種樣式創建新樣式可以實現這壹目標,如下所示:
& ltstyle x:Key = " BigFontButtonStyle " & gt;
& ltSetter Property="Control。font family " Value = " Times New Roman "/& gt。
& ltSetter Property="Control。FontSize" Value="18" />
& ltSetter Property="Control。FontWeight" Value="Bold" />。
& lt/Style & gt;
& ltstyle x:Key = " EmphasizedBigFontButtonStyle " based on = " { static resource BigFontButtonStyle } " & gt;
& ltSetter Property="Control。foreground " Value = " White "/& gt;
& ltSetter Property="Control。background " Value = " dark blue "/& gt;
& lt/Style & gt;
& lt/窗口。資源& gt
以編程方式設置樣式。若要以編程方式將命名樣式分配給元素,請從資源集合中獲取樣式,並將其分配給元素的style屬性。請註意,資源集合中的項是壹個對象。
因此,在將檢索到的樣式賦給Style屬性之前,必須將其轉換為Style。例如,如果要設置textblock1的名稱
TextBlock設置已定義的標題文本樣式,請執行以下操作:
text block 1 . style =(style)Resources[" title text "];
請註意,壹旦應用了樣式,它將被密封,無法更改。如果要動態更改應用的樣式,必須創建新樣式來替換現有樣式。
2.wpf模板
當壹個控件的外觀不符合要求時,我們可以使用“控件模板”來改變控件的外觀。只要WPF中的所有控件都有可視的外觀,
會有壹個模板
屬性,並將該屬性的值設置為ControlTemplate對象。按鈕看起來像壹個按鈕,因為它已經
控件模板對象的直接影響。ControlTemplate對象定義控件的完整外觀,您可以替換該對象。
抽象FrameworkTemplate類型只定義了三個屬性。只讀Boolean
屬性用於標識該模板是否可以修改。資源
屬性的類型是ResourceDictionary。讓我們定義壹些只能在模板內部使用的資源。第三個屬性是最重要的,叫做。
定義組成此控件外觀的元素布局的visualTree。
向ControlTemplate類型添加了另外兩個屬性定義:TargetType用於指示哪種類型的控件適合應用於模板;Triggers是Trigger對象的集合。
從ContentControl派生的所有類型都使用ContentPresenter類型的對象來顯示其內容。內容展示者學校
在FrameworkElement中,您可以在模板的可視化樹中包含壹個ContentPresenter對象,以保存要放入模板中的內容。
內容演示者
元素負責顯示從ContentControl控件派生的所有內容。ContentPresenter將世界分為兩類。
like:UIElement的後代和非ui element的後代。對於非UIElement的後代,ContentPresenter將調用對象的。
ToString方法,使用文本來顯示對象。此功能允許從ContentControl派生的控件用於顯示任何類型的內容。
& lt窗戶。資源& gt
& ltstyle target type = " Button " x:Key = " Button style " & gt;
& lt!-設置按鈕的默認樣式-& gt;
& ltsetter Property = " font family " Value = " Comic Sans MS "/& gt。
& lt/Setter & gt;
& lt!-設置按鈕的模板-& gt;
& ltSetter Property = " Template " & gt
& lt二傳。值& gt
& ltcontrol template target type = " Button " & gt;
& lt網格& gt
& ltellipse Fill = " { template binding Background } "/& gt;
& lt內容演示者
Margin="5 "
HorizontalAlignment= "中心"
vertical alignment = " Center "/& gt;
& lt/Grid & gt;
& lt/control template & gt;
& lt/Setter。值& gt
& lt/Setter & gt;
& lt/Style & gt;
& lt/窗口。資源& gt
& ltStackPanel & gt
& ltbutton Margin = " 5 " Style = " { static resource button Style } "
width = " 100 " Height = " 100 "
Content= "我的按鈕" & gt
& lt/Button & gt;
& ltButton Margin="5" Width="200 " >常用按鈕& lt/Button & gt;
& lt/stack panel & gt;。