滚动包含包含ListView的扩展器的ListView不起作用

Chr*_*ian 5 c# wpf listview

我的情况是我的C#WPF应用程序包含一个ListView,其元素是Expanders.每个扩展器都包含一个带有ListViewItems的ListView.这是一张图片: 在此输入图像描述

在右侧,您可以看到滚动条.那个ScrollBar是我的问题.它有两个问题:

  1. 在扩展列表上使用MouseWheel时,ScrollBar不起作用.我指的是从"Controller"到"FullInstallation"的区域.如果将鼠标悬停在标题上("所有测试"),ScrollBar会滚动.我认为Expander中的ListView默认有一个ScrollBar,它"窃取"了MouseWheel事件.但是,我不知道该怎么办.

  2. ScrollBar滚动扩展器项目,而不是扩展器的内容.我的意思是,不可能向下滚动一点,而是总是向下滚动至少1个Expander项目.我希望滚动条滚动,以便可以看到例如"All Tests"Expander的一半.

该图显示了禁用的滚动条,但通过缩小窗口,滚动条将启用.

到目前为止我尝试了什么:

  1. 外部ListView外部的ScrollViewer:这解决了问题1,但这意味着MouseWheel根本不起作用!这是因为外部ListView生成了自己的ScrollViewer(使用Snoop来查找它),它"窃取"了MouseWheel事件.

  2. 将所有控件(ListView,Expander,ListViewItem)的所有MouseWheel事件重定向到ScrollViewer:我再次使用外部ListView外部的ScrollViewer,这次我使用MouseWheel事件为我的所有控件调用外部的MouseWheel事件ScrollViewer中.这确实有效,但是对于鼠标指针的某些位置它没有.例如,在两个ListViewItem之间有一个小的1毫米空间,其中没有捕获MouseWheel事件.或者在最后一个Expander("Short Tests")之后的底部.在那里,我没有得到任何事件.

我尝试了更多的东西,但没有进一步.有谁知道如何解决这个问题?

祝愿,基督徒

Wal*_*mer 3

1)有关如何编写附加行为来控制嵌套项目控件时的鼠标滚轮行为,请参阅:WPF Nested ScrollViewer / ListBox Scrolling

2)非虚拟化itemscontrol支持平滑滚动,请参阅:Is it possible to Implement smoothscroll in a WPF listview?

  • 你的第一个链接(SO之外)已经死了。 (2认同)