【发布时间】:2017-11-02 08:01:48
【问题描述】:
在 UWP 应用中,我尝试对绑定到 ListView 的 ObservableCollection 进行排序 - 因此,collection.OrderBy(..)(创建新集合)不是一个选项。
直到现在我都使用了这个扩展方法:
public static void Sort<TSource, TKey>(this
ObservableCollection<TSource> source, Func<TSource, TKey> keySelector)
{
List<TSource> sortedList = source.OrderBy(keySelector).ToList();
source.Clear();
foreach (var sortedItem in sortedList)
{
source.Add(sortedItem);
}
}
不幸的是,由于source.Clear() 和相应的ListView 一直滚动到顶部,当前的“滚动偏移”被重置 - 这是非常糟糕的用户体验。
有什么想法吗?
【问题讨论】:
-
我不熟悉您的要求,请问您是否尝试在 source.Clear() 之前将“滚动偏移”保存在对象中并再次重置该值,这可能会有所帮助。
-
那将是我的“最后手段”。它可能会起作用,但使用 source.Clear() 列表将首先滚动到顶部,然后在重置为存储的“滚动偏移量”后不久。这看起来很奇怪。
标签: c# sorting uwp observablecollection