获取ListView中的ScrollViewer

今天研究了记录ListView滚动位置,才发现ListView是不带ScrollToXXXOffset方法和XXXOffset属性的。只有ScrollIntoView方法,该方法是把指定的Item滚进视图,以前边缘或者后边缘对齐。其实这个也很好用,只是我想记录绝对的滚动地址,很纠结。最终发现通过VisualTreeHelper可以取得ListView里面的ScrollerViewer,其余就不用多说了把:) 上代码

        public static ScrollViewer GetScrollViewer(this ListView list)
        { 
            Border border = VisualTreeHelper.GetChild(list, 0) as Border;
            ScrollViewer sv = border.Child as ScrollViewer;
            return sv;
        }

        public static double GetHorizontalOffset(this ListView list)
        {
            return list.GetScrollViewer().HorizontalOffset;
        }

        public static double GetVerticalOffset(this ListView list)
        { 
             return list.GetScrollViewer().VerticalOffset;
        }

        public static void ScrollToHorizontalOffset(this ListView list,double offset)
        {
            list.GetScrollViewer().ScrollToHorizontalOffset(offset);
        }

        public static void ScrollToVerticalOffset(this ListView list, double offset)
        {
            list.GetScrollViewer().ScrollToVerticalOffset(offset);
        }

 

posted on 2013-01-05 17:10  坏猫仔  阅读(287)  评论(0)    收藏  举报

导航