具体排序collectviewsource中的分组项目

时间:2013-10-30 06:40:57

标签: c# wpf sorting grouping collectionviewsource

我有一个项目的集合视图。每个项目都是一个对象,它具有SentTime属性和另一个属性ParentId。 我想按照ParentId对项目进行分组,并按以下方式对它们进行排序:

  • 组中的项目应按SentTime升序排序
  • 组应按SentTime降序排序

这是一个简短的例子:

  • 第1项已发送1/10,父ID 1
  • 第2项已发送2/10,父ID 1
  • 第3项已发送3/10,父ID 3
  • 第4项已发送4/10,父ID 3
  • 第5项已发送5/10,父ID 1

然后分组列表应如下所示:

第3项

  • 第4项

第1项

  • 第2项
  • 第5项

我在ViewModel中有我的collectionviewsource。

this.MyCvs.SortDescriptions.Clear();
this.MyCvs.SortDescriptions.Add(new SortDescription("SendTime", ListSortDirection.Ascending));
this.MyCvs.GroupDescriptions.Add(new PropertyGroupDescription("ParentId"));

我知道,要在CVS中订购组,我只需要通过属性添加另一个SortDescription,通过该属性对项目进行分组(在我的案例中为ParentId),但它没有给出我想要获得的结果。 提前感谢所有人的帮助。

1 个答案:

答案 0 :(得分:-1)

当您在网格中进行分组和排序时,您必须将排序说明设置为与您的排序描述略有不同。

this.MyCvs.SortDescriptions.Clear();

this.MyCvs.GroupDescriptions.Add(new PropertyGroupDescription("ParentId"));

this.FilteredMessages.SortDescriptions.Add(new SortDescription("ParentId", ListSortDirection.Ascending));
this.FilteredMessages.SortDescriptions.Add(new SortDescription("SendTime", ListSortDirection.Ascending));

这就是你如何实现每组只应用排序。