目前我有两个 WPF 列表框,模仿以下功能
(来源:psu.edu)
我使用了 2 个 ObservableCollections,以允许用户选择所需的任何项目(灵活性是关键)。主要问题是我有成千上万个分组在两个列表框中。总的来说,设计非常好用(几十个项目),但当用户将所有可用项目从左边复制到右边时,屏幕会冻结(需要在不同线程上运行的时间?)。
查看 ObservableCollection,它缺少 AddRange 方法,而互联网上有各种实现。我也知道每个项目被复制时都会无意中触发 CollectionChanged 事件,严重影响性能。
可能我将来必须允许用户从超过10,000个项目的组中选择,听起来像是一个糟糕的想法,但由于列表框(CollectionViewSource)上的分组非常有效,这是不可协商的,但会关闭两个列表框的虚拟化。当使用ObservableCollection绑定数据加载包含数千个项目的列表框时,有什么方法可以提高性能?您推荐任何AddRange类型实现吗?我在这里唯一的选择是在后台线程上运行此操作,这似乎很昂贵,因为我不是从数据库加载数据?