如何检测 Windows Phone 8.1 ListView 向上或向下滚动?

9
嘿,我怎样才能检测到我的ListView向上或向下滚动呢?
我有以下代码:
 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" 做些什么吗?


当BarScroll函数堆栈关闭时,您如何访问verticalBar变量?在接口或类外部编译if/else时,难道不会出现编译错误吗? - Sven Borden
1
“if/else” 是一个示例,确实令人困惑...已修复。 - Bayern
你的意思是它是否完全向上滚动或完全向下滚动?还是你想知道它是正在向上滚动还是正在向下滚动? - meneses.pt
@Meneses 当它向上或向下滚动时。 - Bayern
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接