& ltsetter Property = \" Background \" Val" />
當前位置:成語大全網 - 書法字典 - WPF風格和模板的區別

WPF風格和模板的區別

1.WPF風格

類似於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;。