2012-11-14 4 views
6

LongListSelectorを下にスクロールすると、Webサービスからさらに多くのデータを自動的にロードします。ちょうどストアアプリのように。私の問題は、ロードをトリガーするイベントが見つからないということです。LongListSelectorを使用した連続ページ設定

答えて

13

Microsoftの推奨事項は、LongListSelector.ItemRealizedイベントを使用して、リスト内の最後のアイテム(または最後のN番目のアイテム)が「実現」されているかどうかを確認し、そうであれば新しいレコードの取得を開始します。 UXに関しては、その時点でSystemTrayにProgressIndicatorを表示し、インラインスピナーでiOSを真似しようとしないことをお勧めします。

LongListSelector.ItemRealizedは、Itemが仮想化されたListBoxItemにバインドされたときに発生するため、実際には非常に興味深いイベントです。これは、LongListSelector仮想化ロジックが、FrameworkElementが画面に表示されるように準備する必要があると考えていることを意味します。 ListBoxItemは画面に表示されている場合と表示されていない場合がありますが、表示されていることを示しています。

コードサンプルについてhttp://code.msdn.microsoft.com/wpapps/TwitterSearch-Windows-b7fc4e5e

void resultListBox_ItemRealized(object sender, ItemRealizationEventArgs e) 
    { 
     if (!_viewModel.IsLoading && resultListBox.ItemsSource != null && resultListBox.ItemsSource.Count >= _offsetKnob) 
     { 
      if (e.ItemKind == LongListSelectorItemKind.Item) 
      { 
       if ((e.Container.Content as TwitterSearchResult).Equals(resultListBox.ItemsSource[resultListBox.ItemsSource.Count - _offsetKnob])) 
       { 
        Debug.WriteLine("Searching for {0}", _pageNumber); 
        _viewModel.LoadPage(_searchTerm, _pageNumber++); 
       } 
      } 
     } 
    } 
+0

完璧@を参照してください。ありがとうございました! –

+0

こんにちは、この_offsetKnobは何ですか。 – Noorul

+0

@JustinAngel、私はコレクションをロードするときに最初に起動しますどのように私はそのシナリオを克服するだろう、私はコードサンプルを見てきました。あなたは付いています。 – Eldho

関連する問題