How to detect if the scroll viewer reaches bottom in winrt

后端 未结 2 1105
执念已碎
执念已碎 2021-01-04 20:34

I\'m wondering what\'s the best approach to detect if a ScrollViewer reaches the bottom, right etc.

I think I can achieve that by using both PointerWheelChanged for

相关标签:
2条回答
  • 2021-01-04 20:48

    For UWP I got it like this

    <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;
    }
    
    0 讨论(0)
  • 2021-01-04 20:59

    XAML:

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

    Code behind:

    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);
        }
    }
    
    0 讨论(0)
提交回复
热议问题