【发布时间】:2012-09-09 04:39:34
【问题描述】:
我创建了一个具有实时过滤和排序功能的应用程序(当文本框中的文本发生变化时,列表会动态变化)。我使用了一个绑定到 ObservableCollection 的 ListBox,后来又绑定到了一个 List。它适用于小数据,但当我使用 1000 个项目时它失败了。
我使用 就地 QuickSort 进行排序,并使用 Visibility 属性来筛选项目。出于性能原因,我想这将是最好的。
首先我尝试将 ObservableCollection 绑定到 ListBox。当我快速输入文本时,它引发了异常(检测到布局周期)。
比我尝试使用 List 作为 ItemsSource。排序/过滤完成后,我触发了 NotifyPropertyChanged("MyList")。没有例外,但是当文件过滤器短语只导致 少数可见 项时。加载速度很慢。
我最终做了一些我不喜欢的事情,因为它看起来真的很业余。
Data.ApplyFiltersSorting();
ItemsListBox.ItemsSource = Data.MyItems.Where(a => a.Visibility == Visibility.Visible);
实际上运行速度很快并且不会导致错误。
谁能告诉我在我之前的尝试中可能出了什么问题,以及正确的做法是什么?
【问题讨论】:
标签: c# windows-phone-7 data-binding binding