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

时间:2008-10-16 16:56:27

标签: c# wpf xaml listview scroll

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

感谢。

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

在最糟糕的情况下,您可能希望将带有“模糊”因素的被黑客入侵的ScrollViewer替换为ListView的{​​{3}},例如通过捕获ItemsPanel事件。

答案 2 :(得分:0)

你试过this approach吗?

就像插件一样,我不知道你对这个主题有多了解,但here is a good place要了解更多相关信息。

加入:

我刚刚发现你也可以prevent the mouse wheel of scrolling