// Get the border of the listview (first child of a listview) Decorator border = VisualTreeHelper.GetChild(listbox, 0) as Decorator; if (border != null) { // Get scrollviewer ScrollViewer scrollViewer = border.Child as ScrollViewer; if (scrollViewer != null) { /* Something */ } }
找到ScrollViewer后,可以通过比较VerticalOffset和ScrollableHeight大小来判断是否滚动到末尾:
if (scrollViewer.VerticalOffset >= scrollViewer.ScrollableHeight) MessageBox.Show("Bottom");
通过VerticalOffset计算当前显示的项:
int firstitem = Convert.ToInt32(1 + scrollViewer.VerticalOffset); int lastitem = (7 + scrollViewer.VerticalOffset) > 20 ? 20 : Convert.ToInt32(7 + scrollViewer.VerticalOffset); tb3.Text = firstitem.ToString() + " - " + lastitem.ToString();