ControlTemplate & DataTemplate

简介: http://www.cnblogs.com/dc10101/archive/2011/12/08/2280117.html ControlTemplate和DataTemplate都是用于定制控件的外观,但两者有着很大的区别。

http://www.cnblogs.com/dc10101/archive/2011/12/08/2280117.html

ControlTemplate和DataTemplate都是用于定制控件的外观,但两者有着很大的区别。

ControlTemplate服务于Control(有形的控件),而DataTemplate服务于Data(无形的数据)。

换句话说,ControlTemplate用于将已有的外观进行改造,DataTemplate是从无到有地构建外观。

 

ContentControl、ItemsControl类型

  • ContentControl,它的Content属性包含单个元素,例如Button
  • ItemsControl,它的Items属性包含多个元素,例如Listbox

 

ContentPresenter、ItemsPresenter类型

平常的使用中,可以认为这些Presenter是占位符,用于ControlTemplate的定义中,代表了控件原本的Content。

以ContentControl为例,它有一个ContentPresenter类型的属性,如果其值是一个UIElement,那就直接显示这个UIElement,但如果是某个无形的数据,就要让ContentPresenter的值是一个DataTemplate。

 

ControlTemplate类型

ControlTemplate的代表:

  • ContentControl类型的Template属性
  • ItemsControl类型的Template属性

ControlTemplate类型中常见到{TemplateBinding 属性名},一般表示与原有控件的属性绑定。

 

DataTemplate类型

DataTemplate的典型代表:

  • ContentControl类型的ContentTemplate属性
  • ItemsControl类型的ItemTemplate属性

DataTemplate类型中常见到{Binding …},表示数据绑定。

 

 

以下不属于Template,但是经常会与Template一起出现,所以写在这里。

 

ItemsPanel类型

表示ItemsControl各个Item是如何布局的,常用的也就是StackPanel横过来竖过来这些。

 

ItemContainerStyle类型

定制ItemsControl中各个Item的Style。如果要定制ItemsControl总框架的Style,就直接用ItemsControl的Style属性。

 

相关文章
|
前端开发
div文字居中
div文字居中
|
JavaScript
textarea 高度自适应
textarea 高度自适应
|
Windows C#
[UWP]理解ControlTemplate中的VisualTransition
原文:[UWP]理解ControlTemplate中的VisualTransition 1. 前言 VisualTransition是控件模板中的重要组成部分,无论是自定义控件或者修改控件样式都会接触到VisualTransition。
671 0
|
C# Windows
WPF ItemsControl ListBox ListView比较
原文:WPF ItemsControl ListBox ListView比较 在进行列表信息展示时,WPF中提供多种列表可供选择。这篇博客将对WPF ItemsControl, ListBox, ListView进行比较。
1114 0
Blend_ControlTemplate(Z)
原文:Blend_ControlTemplate(Z) 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010265681/article/details/76651768 对于ControlTemplate没有一个特定的概念,为了避免过于抽象,可以简单的理解ControlTemplate是通过改变Style改变控件视觉效果的类。
838 0
|
C# 容器 数据可视化
WPF自定义TextBox及ScrollViewer
原文:WPF自定义TextBox及ScrollViewer   寒假过完,在家真心什么都做不了,可能年龄大了,再想以前那样能专心坐下来已经不行了。回来第一件事就是改了项目的一个bug,最近又新增了一个新的功能,为程序添加了一个消息栏。
1630 0
|
C#
WPF中ControlTemplate和DataTemplate的区别
原文:WPF中ControlTemplate和DataTemplate的区别 下面代码很好的解释了它们之间的区别: ...
1553 0
|
C#
WPF中Expander与ListBox(ItemsControl)嵌套中的问题
原文:WPF中Expander与ListBox(ItemsControl)嵌套中的问题 1. 当ListBox放在Expander中时,为了要实现实时更新数据的效果,这里使用了    ObservableCollection类型来作为数据源,         初始的简单例子如下:只有一个List...
1749 0
|
缓存
StaticResource和DynamicResource
原文:StaticResource和DynamicResource   DynamicResource与StaticResource的区别   资源的使用   下面的示例在page的根元素定义了一个Soli...
836 0
|
虚拟化 容器 .NET
[UWP]了解模板化控件(8):ItemsControl
原文:[UWP]了解模板化控件(8):ItemsControl 1. 模仿ItemsControl 顾名思义,ItemsControl是展示一组数据的控件,它是UWP UI系统中最重要的控件之一,和展示单一数据的ContentControl构成了UWP UI的绝大部分,ComboBox,ListBox,ListView,FlipView,GridView等控件都继承自ItemsControl。
1369 0