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

Yvo*_*ila 6 .net wpf treeview virtualization smooth-scrolling

按照这个问题这个问题,现在我有一个带有分层数据的TreeView,如下图所示:

在此输入图像描述

由于数据量很大,我已经改变VirtualizationTreeViewon(VirtualizingPanel.IsVirtualizing="True")的属性.

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

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

笔记:

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

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

小智 0

您是否尝试过将 VirtualizingPanel 上的 ScrollUnit 设置为像素滚动?当 IsVirtualizing 和 IsVirtualizingWhenGrouping 设置为 true 时,这帮助我解决了 ListView 上奇怪的滚动行为:

VirtualizingPanel.IsVirtualizing='True'
VirtualizingPanel.IsVirtualizingWhenGrouping='True'
VirtualizingPanel.ScrollUnit='Pixel'
Run Code Online (Sandbox Code Playgroud)