我们正在尝试提出一种虚拟化TreeView
的好方法,数据并不是真正的问题,因为它非常轻(每个项大约16个字节),问题是我们可能有成千上万个,尽管实际的数据只会占用160 kb的内存,treeview项确实会使用更多的内存。现在,我们已经尝试使用3种不同的树(WPF,Infragistics和Telerik)进行虚拟化。它们都有很大的问题,使它们无法用于我们的应用程序:
WPF TreeView
:滚动条显示一些奇怪的行为,跳跃很多,尺寸不一致,用鼠标拖动滚动无法正常工作(来回跳转)
Telerik:项目消失,滚动条也不稳定,项目随机展开折叠,样式不起作用
Infragistics:根本不对项目进行虚拟化,每个项目都保留在内存中,从而使虚拟化无用。
几个月来,我们一直在为此苦苦挣扎,但我们一直找不到合适的解决方案。你们中的任何人是否已经成功地用9000项以上的TreeView
实现了虚拟化?如果是这样,您的策略是什么?您是否使用了第三方控件?它能100%工作吗?
任何建议都非常感谢。
谢谢。
最佳答案
我们使用了Bea Costa的Stollnitz技巧来缩进ListView
中的项目,并使用UI虚拟化来达到良好的效果。
http://www.beacosta.com/blog/?p=45
我已经在ICollectionView
的支持下获得了100,000个项目,并且它对过滤等仍然非常敏感。
关于.net - TreeView虚拟化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4600006/