2015-12-16 12 views
9

Hey, wie kann ich erkennen, wenn mein ListView nach oben oder unten gescrollt wird?Erkennen, wenn ListView "nach oben" oder "nach unten" gescrollt wird? Windows Phone 8.1 ListView

Ich habe dies:

private void MainPage_OnLoaded(object sender, RoutedEventArgs e) 
{ 
    var scrollViewer = MyListView.GetFirstDescendantOfType<ScrollViewer>(); 
    scrollViewer.ViewChanged += BarScroll; 
} 

private void BarScroll(object sender, ScrollViewerViewChangedEventArgs e) 
{ 
    var scrollbars = (sender as ScrollViewer).GetDescendantsOfType<ScrollBar>().ToList(); 
    var verticalBar = scrollbars.FirstOrDefault(x => x.Orientation == Orientation.Vertical); 

    if (verticalBar) (/*If ListView is scrolled up*/) 
    { 
     //Code when the ListView is scrolled up 
    } 
    else (/*If ListView is scrolled down*/) 
    { 
     //Code for when the ListView is scrolled down 
    } 
} 

Muss ich etwas tun müssen, mit "verticalBar.Height> verticalBar.ActualHeight"?

+0

Wie Sie verticalBar var acces, wenn die BarScroll Funktion Stapel geschlossen ist? haben Sie nicht einen Kompilierungsfehler beim Kompilieren einer If/else außerhalb Schnittstelle oder Klasse? –

+1

Das "if/else" war eine Probe, in der Tat verwirrend ... Fixed. – Bayern

+0

Sie meinen, wenn es vollständig gescrollt ist oder vollständig gescrollt ist? Oder möchten Sie wissen, ob es gescrollt wird oder ob es gescrollt wird? – Meneses

Antwort

6

Ändern Sie bitte Ihre BarScroll Handler in einer solchen Art und Weise und private Variable zu Ihrem Hauptklasse hinzufügen alten Wert von Blättern zu halten Offset:

private double offset; 

    private void BarScroll(object sender, ScrollViewerViewChangedEventArgs e) 
    { 
     double newOffset = (sender as ScrollViewer).VerticalOffset; 
     if (newOffset > offset) 
     { 
      //Logic for scroll down 
     } 
     else if (newOffset < offset) 
     { 
      //Logic for scroll up 
     } 

     offset = newOffset; 
    } 
Verwandte Themen