2015-12-16 9 views
9

ListViewim yukarı veya aşağı kaydırıldığında nasıl algılayabilirim?ListView "yukarı" veya "aşağı" kaydırıldığında algılar mı? Windows Phone 8.1 ListView

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 
    } 
} 

ben "verticalBar.Height> verticalBar.ActualHeight" ile bir şey yapmak gerekir mi:

bu var?

+0

Nasıl BarScroll fonksiyonu yığını kapalıyken verticalBar var acces do? if/else dışında bir arayüz veya sınıf derlerken bir derleme başarısızlığınız yok mu? –

+1

"if/else" bir örneklemdi, aslında kafa karıştırıcı ... Sabit. – Bayern

+0

Yani tamamen yukarı kaydırılmış mı yoksa tamamen aşağı kaydırılmış mı? Ya da yukarı kaydırılıp kaymadığını mı yoksa aşağı kaydırılmış mı olduğunu bilmek ister misiniz? – Meneses

cevap

6

böyle bir şekilde BarScroll işleyicisi değiştirin ve ofset kaydırma eski değerini tutmak için ana sınıfa özel değişkeni ekleyin:

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; 
    }