WPF列表中每个项目的不同项目模板?

时间:2008-09-30 11:37:23

标签: wpf itemtemplate

我在列表控件中有很多项。我希望每个项目都有不同的项目模板,具体取决于项目的类型。因此列表中的第一项是ObjectA类型,因此我希望它使用ItemTemplateA进行渲染。第二项是ObjectB类型,所以我希望它有ItemTemplateB进行渲染。目前我只能使用ItemTemplate设置为它们定义一个模板。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:15)

ItemTemplateSelector会有效,但我认为在资源部分创建多个DataTemplate然后只给每个DataType更容易。如果项目生成器检测到匹配的数据类型,则会自动使用此DataTemplate

<DataTemplate DataType={x:Type local:ObjectA}>
   ...
</DataTemplate>

另外,请确保x:Key没有设置DataTemplate 阅读有关此方法的更多信息here

答案 1 :(得分:6)

查看列表控件的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/