0

我正在开发一个包含多个 ListView 的 WPF 应用程序。每个视图都有一个按钮,用户可以按下它来启动处理视图中项目的功能。项目数量通常以数千计,并且可能需要几分钟来处理。

现在,我希望选择当前正在处理的项目并将其滚动到,以便用户可以预知已处理了多少。这反过来也使用户很容易知道在发生错误时是什么项目导致处理停止,因为它被选中。

为此,我已将 ListView 的 SelectedIndex 绑定到我在处理函数中设置的 ScrollRow 属性。然后,我使用事件 SelectionChanged 滚动到选定的项目,该事件运行一个在选定项目上调用 ScrollToView 的函数。

我的窗口包含许多视图,因此在包含视图的主窗口上通常有一个滚动条。问题是,当我在视图中的一行上调用 ScrollToView 时,当用户想要查看窗口中更下方的另一个视图时,主窗口也会滚动到该视图。

我已经研究过直接设置滚动位置,但还没有找到任何方法来做到这一点。

当窗口中的视图滚动时,如何防止窗口滚动?

4

1 回答 1

1

我不确定用户是否希望看到一个列表框为其他一千个项目设置动画。
而是一个关于当前处理的小信息面板,显示百分比进度,当前项目,时间......
但是但是......我不是在这里质疑你的设计选择:-)
所以你应该做的是让 scrollViewer您的 listView,并在其上调用 ScrollToVerticalOffset 以使内容滚动而不会窃取焦点。要找到滚动查看器,您可以使用我在这个问题中的回答: 如何获取 ListView 中可见项目的起始索引和数量?
如果您想寻求更多的 xaml/binding 解决方案,您可以使用这种解决方案公开 VerticalOffset:
http://marlongrech.wordpress.com/2009/09/14/how-to-set-wpf-scrollviewer-verticaloffset-and-horizo​​ntal-offset/

于 2012-11-16T12:07:06.460 回答