2012-07-21 51 views
1

我有一个带有ScrollViewer控件的页面。我试图实现一种无限滚动方法,当用户向下滚动到内容的末尾时,该方法从web服务中延迟加载内容。在WP7中使用Silverlight中的ScrollViewer控件检测滚动结束

这似乎是一件小事,但要处理的最显眼的事件(ManipulationCompleted)并不适用于我的要求。当用户停止触摸屏幕时,事件似乎发生。但通常scrollviewer之后会继续滚动,因为它使用动态滚动。因此,我无法准确检测滚动查看器何时到达内容的末尾。

该问题的解决方案在an MSDN blog上进行了描述。但是,这并不适合我的情况。本文介绍了带有嵌入式ScrollViewer的ListBox的用法。但我没有使用ListBox,我使用ScrollViewer和其他一些控件。

当我试图从博客使用的代码,该代码失败:

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

与此异常:

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

我相信我的每一步都博客的建议,并且还添加了建议风格元素,我的App.xaml

回答

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

我希望这有助于