ItemTemplate和ControlTemplate的区别

6

我对学习WPF感到困惑。我看到ControlTemplate用于确定列表框中每个项目的外观。那么在列表框中,ItemTemplate不是用来确定外观的吗?它们之间有什么区别?


2个回答

13

控件模板(ControlTemplate)可让您更改现有控件的外观和感觉。例如,将普通的日常按钮变成类似Vista任务栏上的闪亮玻璃按钮,或将选项卡控件变成新的Office 2007样式。

控件本身只包含行为,而控件模板则包含外观和感觉 - 因此,按钮是“可以单击的东西”,而不是“带有某些3D效果的矩形,您可以在其上单击”。

您可以替换ListBox的控件模板,以获得带有圆角或自定义滚动条等特性的列表框。

另一方面,数据模板(DataTemplate)(ItemTemplate是DataTemplate类型的属性)允许您控制显示在列表框(及其他类似控件)中的数据行的显示方式,数据模板用于指定诸如“显示姓氏,然后是逗号和名字 - 如果名字以A开头,则姓氏应该加粗,名字应该是绿色”的内容。

为了完整起见,还有一个ItemsPanelTemplate类,用于更改列表框的内部布局 - Charles Petzold的WPF书籍中有一个示例,演示如何使用它使普通列表框在一个圆圈中显示其项目。


3

ItemTemplate(项模板)描述如何在列表框中呈现数据项(例如,您可能已将列表框绑定到List - ItemTemplate将允许您指定如何呈现Foo)。 ItemTemplate是DataTemplate(数据模板)。

ControlTemplate(控件模板)描述ListBox本身应该如何呈现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接