2012-11-14 25 views
6

Quando il mio LongListSelector scorre verso il basso, voglio caricare automaticamente più dati da un servizio web. Proprio come fa l'app Store. Il mio problema è che non riesco a trovare alcun evento per attivare il carico più azione.Impaginazione continua con LongListSelector

risposta

13

La raccomandazione da parte di Microsoft è quella di utilizzare l'evento LongListSelector.ItemRealized, verificare se è l'ultimo elemento (o l'ultimo elemento dell'N °) nell'elenco da "realizzare" e se lo è, quindi inizierà il recupero di nuovi record . In termini di UX, è meglio mostrare un ProgressIndicator sul SystemTray al momento e non provare a imitare iOS con i filatori in linea.

LongListSelector.ItemRealized è in realtà un evento molto interessante poiché si attiva quando un elemento è stato associato a un ListBoxItem virtualizzato. Ciò significa che la logica di virtualizzazione di LongListSelector ritiene necessario preparare FrameworkElement per essere visualizzato sullo schermo. Il ListBoxItem può o non può essere ancora sullo schermo, ma è una buona indicazione che sta arrivando.

Per un esempio di codice vedere @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

perfetto, grazie! –

+0

Ciao, ecco cos'è _offsetKnob. – Noorul

+0

@JustinAngel, Si accenderà per la prima volta quando caricherò la collezione come potrei superare tale scenario, ho guardato l'esempio del codice. hai attaccato. – Eldho