我创建了一个带有实时过滤和排序的应用程序(当文本框中的文本发生变化时,列表会动态更改)。我使用了一个绑定到ObservableCollection的ListBox,后来又绑定了一个List。它适用于小数据,但是当我使用1000个项目时,它失败了。
我使用到位 QuickSort进行过滤项目的排序和Visibility属性。我猜想出于性能原因这是最好的。
首先,我尝试将ObservableCollection绑定到ListBox。当我快速输入文本时,它会抛出异常(检测到布局循环)。
比我尝试使用List作为ItemsSource。排序/过滤完成后,我解雇了NotifyPropertyChanged(“MyList”)。没有例外,但是当文件管理器短语仅导致少量可见项时。它装得非常慢。
我最终做了一些我不喜欢的事情,因为它看起来非常业余。
Data.ApplyFiltersSorting();
ItemsListBox.ItemsSource = Data.MyItems.Where(a => a.Visibility == Visibility.Visible);
实际上工作速度很快,没有错误。
有人可以告诉我在我之前的尝试中可能出现的问题,以及这样做的正确方法是什么?
答案 0 :(得分:0)
您是否尝试使用CollectionViewSource
进行排序和过滤?
Geoff Hudik在这里做了类似的事情:http://www.geoffhudik.com/tech/2010/10/14/wp7-in-app-searching-filtering.html