使用带有WP7的Silverlight中的ScrollViewer控件检测滚动结束

时间:2012-07-21 11:18:04

标签: silverlight windows-phone-7 scrollviewer

我有一个带有ScrollViewer控件的页面。我正在尝试实现一种无限滚动的方法,当用户向下滚动到内容的末尾时,该方法会延迟从Web服务加载内容。

这看起来像是一项微不足道的任务,但是处理最常见的事件(ManipulationCompleted)并不能满足我的要求。当用户停止触摸屏幕时,事件似乎触发。但通常滚动查看器会在此之后继续滚动,因为它使用动态滚动。因此,我无法准确检测滚动查看器何时到达内容的末尾。

an MSDN blog描述了此问题的解决方案。然而,这对我的情况不起作用。本文描述了带有嵌入式ScrollViewer的ListBox的用法。但我没有使用ListBox,我使用ScrollViewer和其他一些控件。

当我尝试使用博客中的代码时,此代码失败:

ScrollViewer sv = this.myScrollViewer;
FrameworkElement element = VisualTreeHelper.GetChild(sv, 0) as FrameworkElement;

有这个例外:

  

System.ArgumentOutOfRangeException未处理Message = Specified   参数超出了有效值的范围。参数名称:   childIndex

我相信我做了博客建议的每一步,并且还将建议的Style元素添加到我的App.xaml

1 个答案:

答案 0 :(得分:0)

if (ScrollViewer != null)
{
  if ((ScrollViewer.ScrollableHeight != 0 && ScrollViewer.VerticalOffset != 0 &&
  ScrollViewer.ScrollableHeight - ScrollViewer.VerticalOffset) <= 10) || ScrollViewer.ScrollableHeight == 0)
  {
    //do work here
  }    
}

我希望这会有所帮助