來自《深入淺出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,而是執行一段動畫。