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

Phi*_*ght 14 wpf itemtemplate

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

rud*_*ler 15

ItemTemplateSelector会工作,但我认为这是更容易地创建多个DataTemplate在资源部分,然后只给每一个A S DataType.DataTemplate如果项目生成器检测到匹配的数据类型,这将自动使用此项?

<DataTemplate DataType={x:Type local:ObjectA}>
   ...
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

还要确保你没有x:Key设置DataTemplate.在这里
阅读更多关于这种方法

  • 我忘记输入{x:Type ...东西,请再试一次! (4认同)
  • 好像链接已经死了..你有没有类似的来源参考? (2认同)

Mat*_*ton 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/