2011-05-29 73 views
4

我的问题是我有一个数据绑定的ItemsControl,列表中有一些数据,用户可以上下滚动。在scrollviewer中保留位置

向列表中添加新项目(即用户刷新列表)时,滚动位置根据其中的许多新项目而移动。添加新项目时是否有保持滚动位置的方法?

感谢

+0

你就不能存储滚动位置,刷新后手动设置滚动位置回来吗? – Kolky 2011-05-29 16:14:48

+0

例如,如果用户位于列表的顶部,则偏移量将为0.添加新项目时,偏移量仍将为0. – 2011-05-29 16:18:29

回答

0

尝试设置IsSynchronizedWithCurrentItem="True"在列表框

+0

这只适用于ListBox并需要设置SelectedItem,SelectedItem可能并不总是当前列表框视图顶部的项目 – 2011-05-29 16:21:59

0

假设所有项目都是固定高度的,你应该能够经过调整的ScrollOffset加成是一定要采取的增加的号码项目考虑。

+0

是的,我考虑过这个问题,但每个项目都是不同的高度,因为每个项目的长度都有变化。也许我将不得不计算新项目的总高度,并通过调整滚动偏移... – 2011-05-31 05:19:58

1

如果您在ListBoxTombstoner.cs类[1]中查看Codeplex上的TombStone Helper项目,您会发现代码可让您获取列表框的基础ScrollViewer并获取其VerticalOffset属性。

然后,您可以随意操作此属性 - 如果您希望滚动位置在添加项目时移动,或者保持相同,则可以添加该属性。

[1] http://tombstonehelper.codeplex.com/SourceControl/changeset/view/e737b2a34421#TombstoneHelper%2fListBoxTombstoner.cs

+0

我知道我需要访问等,但它不是那么简单,但我找到了解决方案,并会发布当我有机会的时候,在这里举例代码。谢谢 – 2011-07-13 10:32:58