我有一个CompositeCollection,它由两种类型的ObservableCollections组成:公司和联系人。 联系人具有属性FullName,而公司具有属性名称。
我想应用排序,因此集合按类型混合,但按名称排序,例如:
Itzhak Perlman
约翰·多伊
微软
莎拉摩尔
StackOverflow的
沃尔特理查森
请注意,我将ItemsControl绑定到CollectionViewSource,其Source设置为CompositeCollection,它的视图变为CompositeCollectionView,它是内部类型,如果我将其类型显式设置为ListCollectionView,它只包含CollectionContainers作为其项目。 / p>
所需的解决方案是一种解决方法,可以对CompositeCollections进行排序,过滤和分组,我不关心覆盖和创建我自己的CompositeCollection,我只是不知道如何覆盖它并在xaml中启用它的功能。
答案 0 :(得分:1)
可以使用IComparable
和要添加到集合中的对象的接口。然后可以按
IComparable getName() // this should return company/employee name
在比较方法中,您可以根据您的要求进行排序
答案 1 :(得分:0)
谁说我必须利用名为'CompositeCollection'的东西? 我决定不使用CompositeCollection 我只是创建一个混合了两种类型的ObservableCollection(Object),并将CollectionViewSource绑定到它。
通过继承CompositeCollection并实现IBindingList
,可以启用排序。