我有一个WPF ListView,当我点击一个只能部分可见的项目时,它会滚动。如何让控件不将该项目滚动到视图中(而只是选择部分可见的项目)?从此控件执行拖动时,此行为非常烦人。
感谢。
补充:我正在寻找一种解决方案,以便在单击控件认为不完全可见的内容时保持控件本身不滚动。通常这是几个像素,并且不需要滚动。
答案 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。