4

我有一个 WPF ListView,每次单击仅部分可见的项目时,它都会滚动。如何防止控件将该项目滚动到视图中(而不是简单地选择部分可见的项目)?从该控件进行拖动时,此行为非常烦人。

谢谢。

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

4

3 回答 3

6

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

于 2008-10-17T04:33:50.160 回答
1

由于我目前在路上,我不能尝试这个,但是您是否尝试过使用 CanContentScroll,和/或将可滚动内容包装到面板中,如MSDN 上的 ScrollViewer 概述所建议的那样?

在最坏的情况下,您可能希望将ListView's替换为ItemsPanel带有“模糊”因素的黑客 ScrollViewer,例如通过捕获RequestBringIntoView事件。

于 2008-10-20T13:42:33.310 回答
0

你试过这种方法吗?

只是作为一个插件,我不知道你对这个主题了解多少,但这里是阅读更多关于它的好地方。

添加:

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

于 2008-10-16T18:39:54.070 回答