WPF-17:模板

來自《深入淺出WPF》(劉鐵猛)讀書筆記

Binding和基於Binding的數據驅動界面是WPF的核心部分。

控件(Control)是數據內容表現形式和算法內容表現形式的雙重載體。換句話說,控件即是數據的表現形式讓用戶可以直觀的看到數據,又是算法的表現形式讓用戶方便的操作邏輯。

WPF中的Template分爲兩大類:

1)ControlTemplate:算法內容的表現形式;

2)DataTemplate:數據內容的表現形式;

DataTemplate常用的3處:

i)ContentControl的ContentTemplate;

ii)ItemsControl的ItemTemplate;

iii)GridViewColumn的CellTemplate;


決定控件外觀的是ControlTemplate,決定數據外觀的是DataTemplate,它們正是Control類的Template和ContentTemplate兩個屬性的值。

DataTemplate很智能,具有直接把XML數據結點當作目標對象的功能--XML數據中的元素名(標籤名)可以作爲DataType,

元素的子節點和Attribute可以使用XPath來訪問。


構成Style最重要的兩個元素是Setter和Trigger,Setter類幫助我們設置控件的靜態外觀風格,Trigger類則幫助沃恩設置控件的行爲風格。

Trigger類是最基本的觸發器,也有Property和Value兩個屬性,Property是Trigger關注的屬性名稱,Value是觸發條件。Trigger類還有一個Setters屬性,此屬性值是一組Setter,一旦觸發條件被滿足,這組Setter的“屬性-值”就會被應用,觸發條件不再滿足後,各屬性值會被還原。

MultiTrigger應該爲MultiConditionTrigger,必須多個條件同時成立時纔會被觸發。

DataTrigger:對象的Binding屬性會把數據源源不斷送過來,一旦送來的值與Value屬性一致,DataTrigger即被觸發。注意到,不明確指出Source時Binding會把控件的Datacontext屬性當作數據源而非把控件自身當作數據源。

MultiDataTrigger:多個數據條件同時滿足時才能觸發變化的需求;

EventTrigger:事件觸發;被觸發後並非應用一組Setter,而是執行一段動畫。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章