在WPF ListView中如何防止自动滚动?

我有一个WPF ListView,每当我点击一个只能部分可见的项目时,它就会滚动。 如何让控件不将该项目滚动到视图中(而只是选择部分可见的项目)? 从此控件执行拖动时,此行为非常烦人。

谢谢。

补充:我正在寻找一种解决方案,以便在单击控件认为不完全可见的内容时保持控件本身不滚动。 通常这是几个像素,并且滚动不是必需的。

这些项目滚动到视图中,因为单击列表项目时的默认行为是调用BringIntoView()。 您可以为RequestBringIntoView事件添加事件处理程序,并在它从ListViewItems冒泡到ScrollViewer之前捕获它。 在处理程序中,检查发件人对可见区域的界限,如果您决定不需要滚动,请将事件的Handled标志设置为true。

由于我目前正在旅途中,我无法尝试这一点,但您是否尝试过使用CanContentScroll,和/或将可滚动内容包装到Panel中,如MSDN上的ScrollViewer概述所示 ?

在最坏的情况下,您可能希望使用带有“模糊”因素的被黑客入侵的ScrollViewer替换ListViewRequestBringIntoView ,例如通过捕获RequestBringIntoView事件。

你尝试过这种方法吗?

就像一个插件一样,我不知道你对这个主题有多了解,但这里有一个阅读更多关于它的好地方 。

添加:

我刚刚发现你也可以防止鼠标滚轮滚动 。