2015-12-16 3 views
9

अरे, मेरी सूची दृश्य ऊपर या नीचे स्क्रॉल होने पर मैं कैसे पता लगा सकता हूं?पता लगाएँ जब ListView को "ऊपर" या "नीचे" स्क्रॉल किया गया है? विंडोज फोन 8.1 सूची दृश्य

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

मैं के साथ "verticalBar.Height> verticalBar.ActualHeight" कुछ करने की जरूरत है:

मैं इस किया है?

+0

कैसे जब BarScroll समारोह ढेर बंद कर दिया है आप verticalBar वर को acces करते हैं? यदि आपके पास इंटरफ़ेस या कक्षा के बाहर/if संकलित करते समय संकलन विफलता नहीं है? –

+1

"if/else" एक नमूना था, वास्तव में भ्रमित ... फिक्स्ड। – Bayern

+0

आपका मतलब है कि अगर यह पूरी तरह से स्क्रॉल हो गया है या पूरी तरह से नीचे स्क्रॉल किया गया है? या आप जानना चाहते हैं कि इसे स्क्रॉल किया जा रहा है या यदि इसे स्क्रॉल किया जा रहा है? – Meneses

उत्तर

6

इस तरह के तरीके से अपने BarScroll हैंडलर को संशोधित करने और अपने मुख्य वर्ग के लिए निजी चर जोड़ने पुस्तक के पुराने मूल्य ऑफसेट रखने के लिए:

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; 
    } 
संबंधित मुद्दे