获取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); }
浙公网安备 33010602011771号