我想创建一个可重复使用的ListView,其中包含任意或全部行:
标签+文本框 要么 标签+组合框 要么 标签+ DatePickers
使用模板。我仍然不太了解模板,并且想知道它们中的哪一个 - ControlTemplate,DataTemplate,ItemsTemplate或ContentTemplate - 用于此以及如何使用。谢谢!
答案 0 :(得分:2)
有两种不同类型的模板:DataTemplate
和ControlTemplate
。 ControlTemplate
用于从Template
派生的类的Control
属性,并为特定类型的控件定义可视树。
模板显示的几乎所有其他地方都在使用DataTemplate
。其中包括ContentTemplate
和ItemTemplate
属性。 DataTemplates
为任何非Visual数据类型定义可视树。呈现模板时,DataContext
是正在呈现的数据对象(即List<T>
项),可以轻松绑定数据属性。
要在单个列表中混合使用不同类型的模板,您可以使用DataTemplateSelector
,它允许您编写代码来为每个项目选择模板。另一个选项是为列表中的不同CLR类型的对象创建多个隐式模板(DataType
但不包含x:Key
)。只要这些模板位于控件的资源范围内,呈现集合,类型就会自动解析其模板。