wpf 使用CollectionView进行排序的性能是否高效?

5f0d552i  于 2023-01-14  发布在  其他
关注(0)|答案(1)|浏览(121)

我有一个ICollectionView,用作WPF ListView的输入源。集合视图中的项目(文本消息)数量可能高达1万。我想基于时间戳向集合视图添加排序标准。最新添加的消息应该在顶部。

MyCollectionView.SortDescriptions.Add(new SortDescription("TimeStamp", ListSortDirection.Descending));

**问题:**如果我使用上述排序标准,是否每次添加新消息时都会进行排序?或者CollectionView是否在内部和我的scenerio中维护一个排序列表(即使用TimeStamp作为排序),它只需要将新传入消息的TimeStamp与最后添加消息的TimeStamp进行比较?

2ul0zpep

2ul0zpep1#

你最好不要依赖于集合视图排序,也不要在列表视图中显示10,000个条目。
答案是:
默认情况下,当您使用CollectionView(源)在itemsControl中进行排序、分组和筛选时,排序/分组/筛选行为将在您显式刷新CollectionView或

向集合中添加或移除项时

因此,您不应该对集合进行排序。我认为您最好的选择可能是在未排序的observablecollection的位置0插入。
如果你快速插入大量的项目,那么仍然会消耗很多周期。这些都在你的UI线程上,所以你最好不要计划任何人试图与你的UI交互。如果这些消息来得足够快,你无论如何都会有一个模糊的。
我认为你应该只以“实时”的方式向用户显示最近的几条消息,而不要让他们进行排序。
如果他们需要看到10,000,那么就把它放到另一个视图中,向他们显示静态快照。看看你的表现如何,当你有具体的东西可以玩的时候,就考虑迭代。

相关问题