【发布时间】:2008-09-30 11:37:22
【问题描述】:
我在列表控件中有很多项目。我希望每个项目都有不同的项目模板,具体取决于项目的类型。所以列表中的第一项是 ObjectA 类型,所以我希望它使用 ItemTemplateA 呈现。第二项是 ObjectB 类型,因此我希望它具有 ItemTemplateB 进行渲染。目前我只能使用 ItemTemplate 设置为他们定义一个模板。有什么方法可以实现吗?
【问题讨论】:
标签: wpf itemtemplate
我在列表控件中有很多项目。我希望每个项目都有不同的项目模板,具体取决于项目的类型。所以列表中的第一项是 ObjectA 类型,所以我希望它使用 ItemTemplateA 呈现。第二项是 ObjectB 类型,因此我希望它具有 ItemTemplateB 进行渲染。目前我只能使用 ItemTemplate 设置为他们定义一个模板。有什么方法可以实现吗?
【问题讨论】:
标签: wpf itemtemplate
ItemTemplateSelector 可以工作,但我认为在资源部分创建多个DataTemplates 然后只给每个DataType 更容易。如果项目生成器检测到匹配的数据类型,这将自动使用此DataTemplate?
<DataTemplate DataType={x:Type local:ObjectA}>
...
</DataTemplate>
还要确保您没有为DataTemplate 设置x:Key。
阅读有关此方法的更多信息here
【讨论】:
查看列表控件的ItemTemplateSelector 属性。您可以将其指向自定义 TemplateSelector 并决定在代码中使用哪个模板。
这是一篇描述 TemplateSelectors 的博文:
http://blogs.interknowlogy.com/johnbowen/archive/2007/06/21/20463.aspx
编辑:这是一个更好的帖子:
http://blog.paranoidferret.com/index.php/2008/07/16/wpf-tutorial-how-to-use-a-datatemplateselector/
【讨论】: