C# LongListSelector中的滚动管理
在我的WP8应用程序中,我试图实现一种功能,允许我保存C# LongListSelector中的滚动管理,c#,scroll,windows-phone-8,windows-phone,longlistselector,C#,Scroll,Windows Phone 8,Windows Phone,Longlistselector,在我的WP8应用程序中,我试图实现一种功能,允许我保存LongMultiListSelector的滚动位置,并在以后将其滚动到该位置(例如,在墓碑整理之后)。事实证明,这是一项相当艰巨的任务,尽管取得了一些进展,但我仍然有疑问 据我现在所知,我需要以下几点才能使其正常工作: 显然,可以滚动到我现在拥有的指定项目。(LongMultiListSelector,尽管是LongListSelector的扩展,但没有ScrollTo方法,尽管LongListSelector可以在LongMultiLis
LongMultiListSelector
的滚动位置,并在以后将其滚动到该位置(例如,在墓碑整理之后)。事实证明,这是一项相当艰巨的任务,尽管取得了一些进展,但我仍然有疑问
据我现在所知,我需要以下几点才能使其正常工作:
LongMultiListSelector
,尽管是LongListSelector
的扩展,但没有ScrollTo
方法,尽管LongListSelector
可以在LongMultiListSelector
的可视化树中找到,这就是我所做的)
1.1能够通过动画滚动到指定的项目,而这个问题我还没有解决。这并不重要,但拥有它会很好。经过一些搜索,我发现曾经LongListSelector
有AnimateTo
方法,但目前没有LongListSelector
的哪些项目当前在屏幕上可见,因此我可以保存这些可见项目之一的索引,然后滚动到它。这个问题我还没有解决,它非常重要
经过一番搜索,我发现了这个问题:。Is说,以前的LongListSelector
有一个GetItemsInView
函数,后来它有Link
和Unlink
事件,特别是为了这个目的。当前LongListSelector
没有这两个选项
因此,主要的问题是我现在应该怎么做才能在LongListSelector
中找到可见项我觉得目前根本没有简单直接的方法来找出哪些项目是可见的。幸运的是,并不是所有的东西都丢了。运行时,可以在
LongListSelector
的可视化树中找到ScrollBar
和LongListSelector
LongListSelector
用于ScrollTo
方法,从ScrollBar
我需要一个ValueChanged
事件,在那里我可以获得ScrollBar.Maximum
和ScrollBar.Value
,它们分别是控制高度和当前偏移量。同样的问题是,这两个属性的计算并不总是正确的,这可能是由于LongListSelector
的虚拟化以及它不能同时显示所有项目的事实。好的是负距离(最大值,从列表末尾的偏移量)虽然是相对的,但总是正确的
因此,如果您可以手动计算
LongListMultiSelector
的实际高度,则可以使用该实际高度和负距离进行滚动管理。在我的例子中,这很容易,因为所有的项目都具有相同的高度。回答能够通过动画滚动到指定的项目:
这篇文章对你有帮助
主要思想:ScrollViewer的
垂直偏移属性
被标记为只读。因此,您可以创建一个shell类来帮助您设置VerticalOffset的动画。Anton您有任何在线代码示例吗?一个github或什么的?我对这种手工计算方法感兴趣!