在UWP應用程序中,我試圖對ObservableCollection
進行排序,它綁定到ListView
--因此collection.OrderBy(..)
(它創建了一個新的集合)不是一個選項。UWP/C#:ObservableCollection排序就地(沒有滾動)
直到現在我用這個擴展法:
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()清單將首先滾動到頂部,然後重置到存儲的'滾動偏移'不久。那看起來很奇怪。 –