2011-02-08 10 views
4

手動でリストビューコントロールのコンテンツを左側にスクロールする必要があります。WPF:ListViewコントロールを水平にスクロールする方法はありますか

scrollIntoViewを呼び出すと自動的に呼び出されますが、スクロールする項目が表示されていない場合にのみ呼び出されます。 ListViewは項目にスクロールし、水平方向に左側にスクロールします。ちょうど私がそれが必要なように。

しかし、スクロールする項目がすでに表示されている場合は何も起こりません。そのため、手動でスクロールする必要があります。

+1

項目がすでに表示されている場合は、自動スクロールで表示する必要がありますか? – BertuPG

答えて

3

ListViewScrollViewerは、ビジュアルツリーをトラバースしてからScrollToLeftEndを呼び出して見つけることができます。このようなものはうまくいくはずです

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

関連する問題