我有一个ScrollViewer和一个ListBox,它绑定到视图模型中的ObservableCollection。 ScrollViewer最大化以占用父容器的所有可用空间。我发现当集合被修改并最终产生比ScrollViewer的可视区域更多的ListBoxItem时,ScrollViewer向下滚动以显示ListBox中的最后一项。当子ListBox的项目更新时,如何阻止ScrollViewer滚动? 我希望每当视图模型中的集合更新时,滚动位置都保持不变。 提前谢谢!
答案 0 :(得分:0)
您将不得不自己管理。 ListBox
有ScrollIntoView
方法,可让您滚动到特定位置:
http://msdn.microsoft.com/en-us/library/system.windows.controls.listbox.scrollintoview(v=VS.95).aspx
如果需要,确定当前可见的项目并不容易。请参阅我作为WP7Contrib项目的一部分编写的ItemsControlExtensions
:
http://wp7contrib.codeplex.com/SourceControl/changeset/view/67473#1475881
这有一个GetItemsInView
扩展方法,可以提供可见项列表。