gpt4 book ai didi

c# - LongListSelector 中的滚动管理

转载 作者:太空狗 更新时间:2023-10-30 01:22:03 25 4
gpt4 key购买 nike

在我的 WP8 应用程序中,我正在尝试实现一项功能,允许我保存 LongMultiListSelector 的滚动位置并在稍后将其滚动到该位置(例如,在逻辑删除之后)。事实证明这是一项艰巨的任务,尽管取得了一些进展,但我仍然有疑问。

据我所知,我需要满足以下条件才能正常工作:

  1. 显然滚动到指定项目的能力我现在拥有了。 (LongMultiListSelector,尽管是 LongListSelector 的扩展,但没有 ScrollTo 方法,尽管 LongListSelector 可以在LongMultiListSelector 的可视化树,这就是我所做的)。

    1.1。 Ability To scroll to a specified item with animation 这个我还没有解决。这不是那么重要,但拥有它会很好。经过一些搜索,我发现曾经 LongListSelectorAnimateTo 方法,但目前没有。

  2. 能够找出 LongListSelector 的哪些项目当前在屏幕上可见,这样我就可以保存这些可见项目之一的索引,然后滚动到它。这个我也没有解决,很重要。

    经过一番搜索,我发现了这个问题:WP7 Toolkit Update Removed GetItemsInView() from the LongListSelector .是说以前 LongListSelector 有一个 GetItemsInView 函数,后来它有 LinkUnlink 事件特别是为了这个目的。目前 LongListSelector 没有这些选项。

    所以主要问题是我现在应该怎么做才能在 LongListSelector 中找到可见项?

最佳答案

我看起来目前根本没有简单直接的方法来查找哪些项目是可见的。幸运的是,并非一切都丢失了。 ScrollBarLongListSelector 都可以在运行时在LongListSelector 的可视化树中找到。

LongListSelectorScrollTo 方法所必需的,从 ScrollBar 我需要一个 ValueChanged 事件,我可以从中获取ScrollBar.MaximumScrollBar.Value 分别是控件高度和当前偏移量。再次出现的问题是,这两个属性并不总是能够正确计算,这可能是由于 LongListSelector 的虚拟化以及它不会同时显示所有项目的事实。好消息是负距离(最大值 - 值,距列表末尾的偏移量)虽然是相对的,但总是正确的。

因此,如果您可以手动计算 LongListMultiSelector 的实际高度,则可以使用该实际高度和负距离进行滚动管理。就我而言,这很容易,因为所有项目的高度都相同。

关于c# - LongListSelector 中的滚动管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14625740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com