控件皮肤、主题与2D和3D世界融合技术解析
1. 控件皮肤与主题
1.1 控件模板与子部分
对于包含子部分的控件,ControlTemplate可视为描述子部分位置的视觉结构。OnApplyTemplate重写部分用于将行为与这些子部分关联起来。在设计某些控件的ControlTemplate时,查看其TemplatePartAttributes并了解所需的子部分是个不错的做法。有时,应用自定义ControlTemplate后控件无法按预期运行,可能是由于子部分缺少名称,导致行为被跳过或应用不当。
1.2 控件定制:属性暴露
Template属性的局限性:Control上的Template属性是动态调整控件外观的标准方法,但存在一个缺点,即即使只想调整模板子部分的几个属性,也需要更改整个视觉树,在某些场景下这是不可接受的。- 基于样式的属性暴露:推荐的方法是在自定义控件上暴露基于样式的属性,专门针对控件的不同子部分。例如,
GridView暴露ColumnHeaderContainerStyle属性来调整列标题的外观;ItemsControl暴露ItemCont