1

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

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

Itzhak Perlman
John Doe
Microsoft
Sarah Moore
StackOverflow
Walter Richardson

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

所需的解决方案是在 CompositeCollection 上启用排序、过滤和分组的解决方法,我不想覆盖和创建自己的 CompositeCollection,我只是不知道如何覆盖它并在 xaml 中启用它的功能。

4

2 回答 2

1

可以利用IComparable一个接口将对象添加到集合中。然后可以排序

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

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

于 2010-02-01T13:06:47.903 回答
0

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

更新

通过继承 CompositeCollection 和 implenting IBindingList,可以启用排序。

于 2010-02-01T17:28:04.357 回答