【问题标题】:How to refresh by pulling down the items?如何通过下拉项目刷新?
【发布时间】:2013-11-17 23:31:28
【问题描述】:

这个问题有很多答案,但是,正如我所见,所有答案都是关于将旧物品放在底部。

这个解决方案:

void resultList_ItemRealized(object sender, ItemRealizationEventArgs e)
{
    if (!_viewModel.IsLoading && resultList.ItemsSource != null && resultList.ItemsSource.Count >= _offsetKnob)
    {
        if (e.ItemKind == LongListSelectorItemKind.Item)
        {
            if ((e.Container.Content as TwitterSearchResult).Equals(resultList.ItemsSource[resultList.ItemsSource.Count - _offsetKnob]))
            {
                _viewModel.LoadPage(_searchTerm, _pageNumber++);
            }
        }
    }
}

是关于在您向下滚动时获取项目。

如何在顶部获取新鲜的新内容(而不是在底部获取更多旧内容)?我怎么知道用户是否正在向上滚动LongListSelector

【问题讨论】:

    标签: c# xaml windows-phone-7 windows-phone-8 windows-phone


    【解决方案1】:

    这里有两篇文章用于为 Windows Phone 7 中的 ListBox(您已标记)完成此操作,并且也适用于 Windows Phone 8

    http://sharpgis.net/post/2011/04/03/RefreshBox-for-Windows-Phone-7.aspx http://blogs.msdn.com/b/jasongin/archive/2011/04/13/pull-down-to-refresh-a-wp7-listbox-or-scrollviewer.aspx

    要设置的两个状态

    ScrollViewer.ManipulationMode ="Control"
    

    【讨论】:

      【解决方案2】:

      你不能指望ItemRealized 被解雇。您需要在LongListSelector 上的ManipulationDelta 事件上添加一个侦听器。如果增量为负,则用户向上滚动。

      编辑

      我只记得微软在Windows Phone 8 中对LongListSelector (LLS) 做了一些更改,这意味着无法确定列表滚动的方向。

      解决方法是将LLS 放入ScrollViewer。然后将LLSHeight 属性设置为Auto。这样滚动的是ScrollViewer,而不是LLS。然后在ScrollViewer'sVerticalOffset上添加一个监听器。

      private double _scrollingFrom;
      
      ScrollViewer.Loaded += (sender, args) => VisualStateHelper.HookEvent<ScrollViewer>(ScrollViewer, "ScrollStates", scrollHandler);
      
      private void scrollHandler(object sender, VisualStateChangedEventArgs e) {
          if (e.NewState.Name.Equals("NotScrolling")) {
              if (ScrollViewer.VerticalOffset < _scrollingFrom) {
                  // Scrolled up
              } else {
                  // Scrolled down
              }
          } else {
              _scrollingFrom = ScrollViewer.VerticalOffset;
          }
      }
      

      有关 VisualStateHelper,请参阅 here

      【讨论】:

      • 我看到它只是水平发生
      • “水平发生”是什么意思?
      • 我的意思是当我向下或向上滚动 LLS 时它不会发生
      • ManipulationStartedManipulationCompleted 怎么样?
      • 这对我有帮助吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 1970-01-01
      相关资源
      最近更新 更多