2011-02-08 105 views
4

我手动需要将ListView控件的内容滚动到左侧。WPF:如何滚动ListView控件水平?

当我呼叫scrollIntoView时,它会自动调用,但只有当滚动到的项目不可见时。 ListView将滚动到该项目并水平滚动到左侧。就像我需要它一样。

但是,如果要滚动到的项目已经可见,什么都不会发生,这就是我需要手动向左滚动的原因。

+1

如果该项目已经可见,什么autoscroll将不得不显示? – BertuPG 2011-02-08 16:43:30

回答

3

通过遍历Visual Tree,然后调用ScrollToLeftEnd,可以找到ScrollViewerListView。像这样的东西应该工作

private void ScrollListViewToLeft(ListView listView) 
{ 
    ScrollViewer listViewScrollViewer = GetVisualChild<ScrollViewer>(listView); 
    listViewScrollViewer.ScrollToLeftEnd(); 
} 
private static T GetVisualChild<T>(DependencyObject parent) where T : Visual 
{ 
    T child = default(T); 
    int numVisuals = VisualTreeHelper.GetChildrenCount(parent); 
    for (int i = 0; i < numVisuals; i++) 
    { 
     Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); 
     child = v as T; 
     if (child == null) 
     { 
      child = GetVisualChild<T>(v); 
     } 
     if (child != null) 
     { 
      break; 
     } 
    } 
    return child; 
} 
+0

工作正常!非常感谢。 – TalkingCode 2011-02-09 13:08:47