【问题标题】:Different item template for each item in a WPF List?WPF列表中每个项目的不同项目模板?
【发布时间】:2008-09-30 11:37:22
【问题描述】:

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

【问题讨论】:

    标签: wpf itemtemplate


    【解决方案1】:

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

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

    还要确保您没有为DataTemplate 设置x:Key
    阅读有关此方法的更多信息here

    【讨论】:

    • 我忘记输入 {x:Type... 的东西了,请再试一次!
    • 还要确保你没有 x:Key set!
    • 链接好像失效了。你有类似的来源可以参考吗?
    • 缺少 {x:Type local:Object} 周围的引号。这里是一个link 与 WPF 中的 ItemsControl 和 DataType 绑定的类似解决方案。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多