2012-10-02 4 views
8

में सबसे नीचे है कि माउस के लिए दोनों PointerWheelChanged का उपयोग करके मैं क्या सबसे अच्छा तरीका है कि अगर एक ScrollViewer नीचे तक पहुँच जाता है पता लगाने के लिए है, है ना आदियदि पुस्तक दर्शक WinRT

मुझे लगता है कि मैं प्राप्त कर सकते हैं सोच रहा हूँ तक पहुँच जाता है कैसे पता लगाने के लिए और स्पर्श के लिए मैनिपुलेशन डेल्टा। इन घटनाओं के हैंडलर में, मैं यह जानने के लिए क्षैतिज ऑफसेट रिकॉर्ड कर सकता हूं कि स्क्रॉलर अंत तक कब पहुंच जाएगा। लेकिन मुझे लगता है कि ऐसा करने का एक बेहतर तरीका हो सकता है।

मुझे यह article मिला है। लेकिन संपीड़न दृश्य राज्य Winrt में काम नहीं कर रहे हैं। CurrentStateChanging ईवेंट विधि को कॉल नहीं किया जा रहा है।

मैंने एक और article भी चेक किया। लेकिन यह सिर्फ स्क्रॉल बार के लिए काम करता है, न कि सामान्य दृष्टिकोण।

कोई भी जानता है कि इस समस्या को हल करने का सबसे अच्छा तरीका क्या है?

उत्तर

17

XAML:

<ScrollViewer 
    x:Name="sv" 
    ViewChanged="OnScrollViewerViewChanged"> 
    <Rectangle 
     x:Name="rect" 
     Width="2000" 
     Height="2000" 
     Fill="Yellow" 
     Margin="10" /> 
</ScrollViewer> 

पीछे कोड:

private void OnScrollViewerViewChanged(object sender, ScrollViewerViewChangedEventArgs e) 
{ 
    var verticalOffset = sv.VerticalOffset; 
    var maxVerticalOffset = sv.ScrollableHeight; //sv.ExtentHeight - sv.ViewportHeight; 

    if (maxVerticalOffset < 0 || 
     verticalOffset == maxVerticalOffset) 
    { 
     // Scrolled to bottom 
     rect.Fill = new SolidColorBrush(Colors.Red); 
    } 
    else 
    { 
     // Not scrolled to bottom 
     rect.Fill = new SolidColorBrush(Colors.Yellow); 
    } 
} 
+1

मैं भी इस पद्धति की जाँच की तरह मिल गया। हालांकि समस्या यह काम नहीं करेगी यदि सामग्री एक स्क्रीन से अधिक नहीं है। – Selkie

+0

अच्छा बिंदु! उत्तर अपडेट कर रहा है। –

+0

अद्यतन के लिए धन्यवाद। लेकिन मुझे लगता है कि यह वास्तव में इस स्थिति में नहीं बुलाया जाएगा। – Selkie

3

UWP के लिए मैं इसे इस

<ScrollViewer Name="scroll" ViewChanged="scroll_ViewChanged"> 
    <ListView /> 
</ScrollViewer> 

private void scroll_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e) 
{ 
    var scrollViewer = (ScrollViewer)sender; 
    if (scrollViewer.VerticalOffset == scrollViewer.ScrollableHeight) 
     btnNewUpdates.Visibility = Visibility.Visible; 
} 

private void btnNewUpdates_Click(object sender, RoutedEventArgs e) 
{ 
    itemGridView.ScrollIntoView(itemGridView.Items[0]); 
    btnNewUpdates.Visibility = Visibility.Collapsed; 
}