我有一个列表框,它可能包含大量带有备份数据的项。为了处理数据虚拟化,我编写了一个实现与ObservableCollection相同接口的集合,将其绑定到WPF的UI虚拟化中,并可以根据需要启动我们的备份数据。
这可以很好地工作。当我在列表框中引入多选时,问题就来了。由于列表框按对象而不是按索引(SelectedItems)管理选定项,因此选择所有项会导致列表框启动所有备份数据并将其保存在内存中,从而破坏了数据虚拟化...
除了重写ListBox来按索引而不是对象来管理选择之外,还有什么方法可以防止这种情况发生吗?
谢谢!
埃里克
发布于 2011-10-05 05:35:31
我们使用UI虚拟化来控制我们的数据虚拟化,但是在列表框保持选择上有问题,所以我们的数据没有被卸载。
我最终做的是连接到虚拟化堆栈面板的项生成器,并侦听生成的容器的数据上下文更改事件。当这种情况发生时,我要么从我们的包装器中卸载真实的数据。
发布于 2011-09-29 13:10:43
为什么不在UI控件上使用虚拟化选项?这将仅加载要在屏幕上显示的数据。
http://www.kirupa.com/net/ui_virtualization_pg1.htm
https://stackoverflow.com/questions/7584700
复制相似问题