【问题标题】:How to detect scroll to top in LongListSelector?如何在 LongListSelector 中检测滚动到顶部?
【发布时间】:2013-06-27 01:44:51
【问题描述】:

对于 WP8,我使用 LongListSelector 来显示项目列表。我需要检测用户何时滚动到顶部以加载列表中的先前项目。

我尝试使用ItemRealized 事件来检测顶部元素何时实现。有几个参考文献用于检测“滚动到底部”。

但是,即使该用户尚未滚动到该项目,也会为顶部元素触发此事件。所以,这并不能让我检测到“滚动到顶部”。

有什么方法可以检测到这个吗?

【问题讨论】:

    标签: silverlight windows-phone-7 scroll windows-phone-8 longlistselector


    【解决方案1】:

    您可以简单地使用此参考来获取垂直偏移 Get vertical offset of LongListSelector

    当垂直偏移为 0(或小于 10)时,您位于 ViewPort 顶部。

    【讨论】:

      【解决方案2】:

      使用您已经在使用的技术 (ItemRealized),但只需忽略第一个事件(因为那是创建列表的时间。您可以通过简单地设置一个标志来忽略它:

      private bool _firstRealized = false;
      
      void yourLLS_ItemRealized(object sender, ItemRealizationEventArgs e)
      {
          // do your item detection here. For example:
          if (Data[0] == e.Container.Content) {
      
             // then
             if (!_firstRealized)
             {
                _firstRealized = true;
             }
             else
             {
                // woo - we've scrolled to top! Do your stuff
             }        
         }
      }
      

      【讨论】:

      • 但是,ItemRealized 事件不会再次为该项目触发(在忽略第一个事件之后)。
      • 仅当用户进行非常小的滚动时。如果用户向下滚动列表超过一个屏幕,则该项目将不再被实现,然后在他们向上滚动时重新实现。
      • 另外你可以看看:nuncaalaprimera.com/2013/…
      • 1.我没有经历过这种行为。即使我从某个项目滚动 2-3 个屏幕,也不会触发 ItemUnRealized 事件。 2. 这个来自博客的代码 sn-p 没有帮助。已经尝试过了,每次用户向上或向下滚动时都会触发它(而不是当用户到达顶部或底部时)。
      • 使用ItemRealized。我刚刚使用示例项目进行了验证,当您滚动屏幕然后返回时,它肯定会触发。我更新了更多代码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      相关资源
      最近更新 更多