虚拟化TreeView - 滚动时不稳定的行为

时间:2017-11-23 07:36:45

标签: .net wpf treeview virtualization smooth-scrolling

关注this questionthis question,现在我有一个带有分层数据的TreeView,如下图所示:

enter image description here

由于数据量很大,我已将(VirtualizationTreeView的{​​{1}}属性设为VirtualizingPanel.IsVirtualizing="True"

现在问题是:滚动树非常不稳定。我尝试解释无法解释的行为:

  • 滚动时,项目会消失/卸载。使用WPF Inspector,我实际上看到,它们会不断被卸载并再次加载。
  • 在滚动级别3的项目时,树不会加载仍未加载的项目(如预期的那样),但是下一级别2项目会在可见级别3项目之上跳跃。

备注:

  • 当所有Level2项目都已折叠时,滚动工作正常。
  • 关闭虚拟化解决了滚动问题(当然我在这种情况下遇到了加载问题)
  • 我已阅读here,此错误已在.Net 4.5.2中修复。我甚至尝试过.Net 4.7.1。行为保持不变。

有什么方法可以避免这种行为吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试将VirtualizingPanel上的ScrollUnit设置为Pixel-Scrolling?当IsVirtualizing和IsVirtualizingWhenGrouping设置为true时,这有助于我在ListViews上出现奇怪的骂人行为:

VirtualizingPanel.IsVirtualizing='True'
VirtualizingPanel.IsVirtualizingWhenGrouping='True'
VirtualizingPanel.ScrollUnit='Pixel'