ItemTemplate与ControlTemplate

时间:2009-02-22 18:25:02

标签: wpf

我对学习WPF很困惑。我看到ControlTemplate用于确定列表框中每个项目的外观。这不是ItemTemplate在列表框中的用途吗?有什么区别?

2 个答案:

答案 0 :(得分:12)

ControlTemplate让您可以更改现有控件的外观和感觉,例如,使普通的日常按钮看起来像Vista的任务栏闪亮玻璃按钮,或者使标签控件看起来像新的Office 2007功能区。

这个想法是控件只包含行为而ControlTemplate包含外观和感觉 - 因此按钮是“你点击的东西”而不是“你可以点击的具有一些3d效果的矩形”。

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

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

为了完整起见,还有一个ItemsPanelTemplate类用于更改列表框的内部布局--Charles Petzold的WPF书中有一个使用它来制作一个普通列表框的例子,将它显示在一个圆圈中。< / p>

答案 1 :(得分:3)

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

ControlTemplate描述了ListBox本身应该如何呈现