1

我创建了一个具有实时过滤和排序功能的应用程序(当文本框中的文本更改时,列表会动态更改)。我使用了一个绑定到 ObservableCollection 的 ListBox,后来又绑定到了一个 List。它适用于小数据,但是当我使用 1000 个项目时它失败了。

我使用就地QuickSort 进行排序,并使用 Visibility 属性对过滤的项目进行排序。我猜出于性能原因,这将是最好的。

首先,我尝试将 ObservableCollection 绑定到 ListBox。当我快速输入文本时,它引发了异常(检测到布局周期)。

比我尝试使用列表作为 ItemsSource。排序/过滤完成后,我触发了 NotifyPropertyChanged("MyList")。没有例外,但是当文件过滤器短语只导致几个可见项目时。它加载非常慢。

我最终做了一些我不喜欢的事情,因为它看起来真的很业余。

Data.ApplyFiltersSorting();
ItemsListBox.ItemsSource = Data.MyItems.Where(a => a.Visibility == Visibility.Visible);

这实际上工作得很快并且不会导致错误。

有人可以告诉我在我之前的尝试中可能出了什么问题,以及这样做的正确方法是什么?

4

1 回答 1

0

您是否尝试过使用CollectionViewSourcefor 排序和过滤?

Geoff Hudik 在这里做了类似的事情:http ://www.geoffhudik.com/tech/2010/10/14/wp7-in-app-searching-filtering.html

于 2012-10-10T06:00:05.247 回答