c# - 滚动包含 Expanders 的 ListView 不起作用

标签 c# wpf listview

我的 C# WPF 应用程序包含一个 ListView,其元素是 Expanders。这些扩展器中的每一个都包含一个带有 ListViewItems 的 ListView。这是一张照片: enter image description here

在右边你可以看到一个滚动条。那个 ScrollBar 是我的问题。它有两个问题:

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

  2. ScrollBar 在 Expander 项目上滚动,而不是在扩展器的内容上滚动。我的意思是,不可能向下滚动一点,而是您总是向下滚动至少 1 个扩展器项目。我希望滚动条能够滚动,这样就可以看到例如“所有测试”扩展器的一半。

图片显示了一个禁用的滚动条,但是通过缩小窗口,滚动条被启用。

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

  1. ScrollViewer outside the outer ListView:这解决了问题 1,但这意味着 MouseWheel 根本不起作用!这是因为外部 ListView 生成了自己的 ScrollViewer(使用 Snoop 发现了这一点),它“窃取”了 MouseWheel 事件。

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

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

祝你好运, 基督徒

最佳答案

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

2) 非虚拟化项控件支持平滑滚动,参见:Is it possible to implement smooth scroll in a WPF listview?

关于c# - 滚动包含 Expanders 的 ListView 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5499354/

相关文章:

c# - System.Windows.MessageBox 在开始之前不会等待用户输入!

wpf - 为什么 contentpresenter 不填充网格单元格?

Flutter 可排序拖放 ListView

php - Yii 从 CListView 部分中访问先前的数据项

c# - Rx 如何将命令与另一个可观察对象结合起来

c# - 如何使用后端 asp.net c# 的 Angular 网站读取其他网站数据

c# - SimpleInjector 为 RegisterManyForOpenGeneric 重复注册,以实现具有多个接口(interface)的实现

c# - 模拟来自 Azure Service Fabric 群集的 10,000 个 Azure IoT 中心设备连接

.net - 2009 年 6 月的 WPF 工具包在将发送给客户的应用程序中使用是否安全?

android - 如何在发送多维数组的服务器的 Android ListView 中显示数据