查看scrollviewer是否位于页面顶部

本文关键字:于页面 顶部 是否 scrollviewer 查看 | 更新日期: 2023-09-27 18:08:22

我使用这段代码来查看滚动查看器是否位于页面底部。

private void OnScrollViewerUpdated(object sender, EventArgs e)
    {
        var verticalOffset = sv.VerticalOffset;
        var maxVerticalOffset = sv.ExtentHeight - sv.ViewportHeight;
        if (maxVerticalOffset < 0 ||
            verticalOffset == maxVerticalOffset)
        {
            swipe_next();
        }

    }

我怎么能看到滚动查看器是在页面的顶部??如果滚动查看器位于页面底部,是否有可能转到页面顶部?

查看scrollviewer是否位于页面顶部

根据MSDN (http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollviewer.aspx),您可以使用ScrollToVerticalOffset(double d)方法滚动到顶部

所以你的方法调用应该像这样:

//scroll to top:
sv.ScrollToVerticalOffset(0);

如果垂直偏移量为0是你的视口顶部,那么你可以通过使用以下内容来检查:

if(sv.VerticalOffset == 0)
{
    //...
}

您可能还需要跟踪指针被按下的位置以及scrollviewer操作完成的事件。

这只是一个示例,请尝试使用此片段。

 // Constructor
public MainPage()
{
    InitializeComponent();
    ListVerticalOffsetProperty = DependencyProperty.Register("ListVerticalOffset", typeof(double), typeof(MainPage), new PropertyMetadata(OnListVerticalOffsetChanged));
    YourScrollViewer.Loaded += YourScrollViewer_Loaded;
}
void YourScrollViewer_Loaded(object sender, RoutedEventArgs e)
{
    var binding = new Binding
        {
            Source = YourScrollViewer,
            Path = new PropertyPath("VerticalOffset"),
            Mode = BindingMode.OneWay
        };
    SetBinding(ListVerticalOffsetProperty, binding);
}
private void OnListVerticalOffsetChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
    var atBottom = YourScrollViewer.VerticalOffset >=   YourScrollViewer.ScrollableHeight;
    if (atBottom) MessageBox.Show("End");
}
public readonly DependencyProperty ListVerticalOffsetProperty;
public double ListVerticalOffset
{
    get { return (double)GetValue(ListVerticalOffsetProperty); }
    set { SetValue(ListVerticalOffsetProperty, value); }
}

也看看这边。