如何将相同的项放在ListBox中的多个组中

时间:2011-11-21 09:33:18

标签: wpf

我想显示一个像这样的分组ListBox:

  • 标签A.
    • Post 1
    • Post 2
  • 标签B.
    • Post 2

源码集是一个帖子列表,每个帖子都可以有很多标签。 如果用户选择“Post 2”,则会突出显示两次。

我尝试使用ICollectionView,但它需要一个Single值来过滤,而不是多值。

1 个答案:

答案 0 :(得分:1)

假设这是你的结构...

public class Post
{
    public string Name { get; set; }
    public string[] Tags { get; set; }
}

您可以实现基于分组的分组的唯一方法是将其展平

var PostTagList = myPosts.SelectMany(
                 p => p.Tags,
                      (owner, tag) => new {owner, tag}).Select(
                         ot => new Post() 
                         {
                             Name = ot.owner.Name,
                             Tags = new string[] { ot.tag }
                         }).ToList();

通过这种方式,您可以使用每个标记重复Post个对象的扁平层次结构(即Post.Tags属性只有Post个标记。

在此之后,分组将适用。