1

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

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

MSDN 博客上描述了此问题的解决方案。但是,这不适用于我的情况。本文介绍了使用嵌入的 ScrollViewer 的 ListBox。但我没有使用 ListBox,我使用的是 ScrollViewer,里面有一些其他控件。

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

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

除了这个例外:

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

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

4

1 回答 1

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

我希望这有帮助

于 2012-08-08T08:44:06.980 回答