2012-11-16 57 views
0

我正在开发一个WPF应用程序,包含多个ListView的。 每个视图都有一个按钮,用户可以按它来启动处理视图中项目的功能。 商品数量通常会增加数千,并且可能需要几分钟的时间才能处理。滚动到项目的视图,但不滚动到查看

现在,我想要选择当前正在处理的项目并滚动到,以便用户能够预测已处理了多少。 这反过来又使得用户很容易知道什么项目导致处理在发生错误时停止,因为它被选中。

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

我的窗口包含很多视图,所以在主窗口上经常会出现一个包含视图的滚动条。 问题是,当我在视图中的一行上调用ScrollToView时,当用户想要查看窗口中更下方的另一个视图时,主窗口也会滚动到此视图。

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

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

回答

1

我不确定用户会喜欢看到一个列表框动画自己其他一千个项目。
而是对当前处理一点点信息面板显示进度%,目前的项目,时间...
但但但....我不是怀疑你的设计选择:-)
你应该做的那么什么是获取listView的scrollViewer,并调用ScrollToVerticalOffset以使内容滚动而不会偷窥焦点。 要找到ScrollViewer中,你可以使用我的回答这样一个问题: How do I get the start index and number of visible items in a ListView?
如果你想去一个更XAML /约束力的解决方案,您可能使使用这种解决方案VerticalOffset:
http://marlongrech.wordpress.com/2009/09/14/how-to-set-wpf-scrollviewer-verticaloffset-and-horizontal-offset/

+0

谢谢!我现在从SelectionChanged的发件人中找到ScrollViewer子,并对其执行scrollViewer.ScrollToVerticalOffset(listView.SelectedIndex)。我想你会对设计有另一种看法,如果你看到它在完成:) – xinux

+0

关于设计:是的,是的,我是在开玩笑你,你注意到:-)很高兴我能帮上忙。 – GameAlchemist