有关如何对CompositeCollection进行排序的任何想法?

时间:2010-01-28 15:01:28

标签: wpf sorting collectionviewsource compositecollection

我有一个CompositeCollection,它由两种类型的ObservableCollections组成:公司和联系人。 联系人具有属性FullName,而公司具有属性名称。

我想应用排序,因此集合按类型混合,但按名称排序,例如:

Itzhak Perlman
约翰·多伊 微软
莎拉摩尔
StackOverflow的
沃尔特理查森

请注意,我将ItemsControl绑定到CollectionViewSource,其Source设置为CompositeCollection,它的视图变为CompositeCollectionView,它是内部类型,如果我将其类型显式设置为ListCollectionView,它只包含CollectionContainers作为其项目。 / p>

所需的解决方案是一种解决方法,可以对CompositeCollections进行排序,过滤和分组,我不关心覆盖和创建我自己的CompositeCollection,我只是不知道如何覆盖它并在xaml中启用它的功能。

2 个答案:

答案 0 :(得分:1)

可以使用IComparable和要添加到集合中的对象的接口。然后可以按

排序
 IComparable getName()  // this should return company/employee name

在比较方法中,您可以根据您的要求进行排序

答案 1 :(得分:0)

谁说我必须利用名为'CompositeCollection'的东西? 我决定不使用CompositeCollection 我只是创建一个混合了两种类型的ObservableCollection(Object),并将CollectionViewSource绑定到它。

更新

通过继承CompositeCollection并实现IBindingList,可以启用排序。