如何使用WPF为ListViewItem使用两个模板

时间:2010-05-04 10:23:18

标签: wpf templates listview listviewitem

我想要一个ListView,它具有类似于Microsoft Outlook收件箱的项目,其中包含由Conversations排列的项目(参见附页)。项目可以是包含会话主题的简单文本块(在照片上为蓝线),也可以包含ListView标题指定的电子邮件信息。最好是具有会话主题的项目是按钮,以便按下此按钮可以显示或隐藏该对话中的电子邮件。

任何想法我怎样才能做到这一点?我是否指定了两个ListViewItem模板?如果是,我如何在代码中告诉每个项目使用哪个模板?

任何帮助都将非常感谢!! 问候, 格里

alt text http://img401.yfrog.com/img401/1719/inboxy.png

2 个答案:

答案 0 :(得分:2)

你应该看看DataTemplateSelector。只是谷歌吧。

这个想法是这样的。

  1. 您将在XAML中定义2-3个模板
  2. 创建一个派生自DataTemplateSelector的类,并基于field / typeof对象 您将返回相应的模板

答案 1 :(得分:1)

屏幕截图中使用的概念称为分组。如果您的ItemsSource有ListCollectionView,则可以轻松使用分组。然后,您需要为ListCollectionView的GroupDescription属性指定多个GroupDescriptions

要定义这些群组的外观,您可以查看此SO帖子:How do I group items in a WPF ListView。其他感兴趣的博客文章可能是:Bea Stollnitz: How can I do custom Grouping?Bea Stollnitz: How do I sort groups of data items?

在您的方案中,您可以使用电子邮件会话的标题作为组标题,也可以使用其他一些数据。