查看scrollviewer是否位于页面顶部

时间:2014-06-13 07:21:46

标签: c# windows-phone-8 scrollviewer

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

private void OnScrollViewerUpdated(object sender, EventArgs e)
    {
        var verticalOffset = sv.VerticalOffset;
        var maxVerticalOffset = sv.ExtentHeight - sv.ViewportHeight;

        if (maxVerticalOffset < 0 ||
            verticalOffset == maxVerticalOffset)
        {
            swipe_next();
        }


    }

如何查看滚动查看器是否位于页面顶部?如果滚动查看器位于页面底部,是否可以转到顶部?

2 个答案:

答案 0 :(得分:0)

根据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)
{
    //...
}

答案 1 :(得分: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); }
}

也要查看here