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 に答える