使用顺序: DataTemplate, UserControl, ControlTemplate, CustomControl
- 尽量使用Template. Template分2种: "纯XAML"和"XAML+CodeBehind"
尽量使用"纯XAML"类型的Template, 纯XAML的Template可以放在任何资源中, 包括没有CodeBehind的ResouceDictionary中.
方法:
- 用Command来操作Model
- 用DataTrigger 响应Model的事件, 设置UI属性
- 用Trigger 响应控件事件, 设置控件属性
- 用Binding, Converter实现Model和UI之间的数据转换 - DataTemplate用于描述UI控件和模型数据的对应关系, 使用DataTemplate的关键是:1)选择哪种控件 2)控件和模型间的Binding 3)DataTrigger处理模型事件
- ControlTemplate用于重新定义UI控件, 少用. 主要用于开发可重用性控件.
- UserControl用于描述UI控件的Style以及UI控件之间的合作. 鼠标事件之类应该由UserControl来处理. UserControl只处理UI控件, 不处理模型数据.
UserControl侧重于控件的组合. - 使用UserControl和DataTemplate之间的区别 :
如果多个UI控件的交互非常复杂, 则封装在UserControl中. 当UI和Model之间界限比较清楚时, 用DataTemplate.
UserControl用于视觉表现和用户交互, DataTemplate用于数据和控件之间绑定. - 需要让用户自定义ControlTemplate时, 使用CustomControl.