WPF-17:模板

来自《深入浅出WPF》(刘铁猛)读书笔记

Binding和基于Binding的数据驱动界面是WPF的核心部分。

控件(Control)是数据内容表现形式和算法内容表现形式的双重载体。换句话说,控件即是数据的表现形式让用户可以直观的看到数据,又是算法的表现形式让用户方便的操作逻辑。

WPF中的Template分为两大类:

1)ControlTemplate:算法内容的表现形式;

2)DataTemplate:数据内容的表现形式;

DataTemplate常用的3处:

i)ContentControl的ContentTemplate;

ii)ItemsControl的ItemTemplate;

iii)GridViewColumn的CellTemplate;

WPF-17:模板

决定控件外观的是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,而是执行一段动画。