3

我有一个列表框,它可能包含大量带有支持数据的项目。为了处理数据虚拟化,我通过编写一个实现与 ObservableCollection 相同的接口并可以根据需要启动我们的支持数据的集合来绑定到 WPF 的 UI 虚拟化。

这工作正常。当我使用列表框引入多选时,问题就来了。因为列表框通过对象而不是索引(SelectedItems)管理选定的项目,所以选择所有项目会导致所有支持数据被列表框旋转并保存在内存中,从而破坏了数据虚拟化......

除了重写 ListBox 以通过索引而不是对象管理选择之外,有没有办法防止这种情况发生?

谢谢!

埃里克

4

2 回答 2

0

我们使用 UI 虚拟化来控制我们的数据虚拟化,但是在列表框保持选择时遇到了问题,因此我们的数据没有被卸载。

我最终做的是绑定到虚拟化堆栈面板的项目生成器并监听生成的容器的数据上下文更改事件。发生这种情况时,我要么从包装器中卸载真实数据。

于 2011-10-04T21:35:30.680 回答
0

为什么不在 UI 控件上使用 Virtualizing 选项?这只会加载要在屏幕上显示的数据。

http://www.kirupa.com/net/ui_virtualization_pg1.htm

于 2011-09-29T05:10:43.313 回答