在我的WP8应用程序中,我正在尝试实现一种功能,允许我保存LongMultiListSelector
的滚动位置并在以后将其滚动到该位置(例如在墓碑之后)。它被证明是一个很大的追求,尽管取得了一些进展,我仍然有疑问。
据我了解,现在我需要以下内容才能实现:
显然滚动到指定项目的能力我现在拥有。 (LongMultiListSelector
,尽管是[{1}}的扩展,但没有LongListSelector
方法,尽管ScrollTo
可以在LongListSelector
的可视化树中找到,我做了什么。)
1.1。 能力滚动到带动画的指定项目,这个我尚未解决。它并不重要,但拥有它会很好。经过一些搜索后,我发现LongMultiListSelector
有LongListSelector
方法,但目前还没有。
能够找出屏幕上当前可见的AnimateTo
项目,以便我可以保存其中一个可见项目的索引,然后滚动到该项目。这个我还没有解决,这是非常重要的。
经过一番搜索,我发现了这个问题:WP7 Toolkit Update Removed GetItemsInView() from the LongListSelector。据说以前LongListSelector
有一个LongListSelector
函数,稍后它会有GetItemsInView
和Link
个事件,特别是为此目的。目前Unlink
没有这些选项。
所以主要问题是我现在应该怎样做才能找到LongListSelector
中的可见项?
答案 0 :(得分:4)
我看起来目前还没有简单直接的方法来查找哪些项目可见。幸运的是并非一切都丢失了。 ScrollBar
和LongListSelector
都可以在运行时在LongListSelector
的可视化树中找到。
LongListSelector
方法需要 ScrollTo
,而ScrollBar
需要ValueChanged
我需要ScrollBar.Maximum
的{{1}}和ScrollBar.Value
分别是控制高度和电流偏移。问题再次出现,这两个属性并不总是正确计算,可能是由于LongListSelector
的虚拟化以及它没有同时显示所有项目。好消息是负距离(最大值 - 值,从列表末尾的偏移量)虽然是相对的,但总是正确的。
因此,如果您可以手动计算LongListMultiSelector
的实际高度,则可以使用该实际高度和负距离进行滚动管理。就我而言,这很简单,因为所有物品的高度都相同。
答案 1 :(得分:0)
回答能够滚动到带动画的指定项目:
This文章会对您有所帮助。
主要想法:ScrollViewer的VerticalOffset Property
被标记为只读。因此,您可以创建一个shell类,它将帮助您为VerticalOffset设置动画。