DataGridでのスクロール位置制御は意外と面倒です。
「DataGridのメソッドを1つ読んで終了!」とはいきません。
大まかな手順は次のようになります。
- VisualTreeからScrollViewerオブジェクトを取得
- ScrollViewerオブジェクトによりスクロール制御
VisualTreeからScrollViewerオブジェクトを取得
DataGridのVisualTreeを辿り、ScrollViewerオブジェクトを取得します。
子オブジェクトの取得にはVisualTreeHelperクラスのGetChildメソッドを使用します。
1 | var child = VisualTreeHelper.GetChild(dgTgt, 0) as Decorator; |
2 | var scroll = child.Child as ScrollViewer; |
ScrollViewerオブジェクトによりスクロール制御
取得したScrollViewerオブジェクトを使ってスクロール制御します。
例えば、先頭までスクロール移動したい場合はScrollToTopメソッドを使用します。
サンプルコード
スクロール位置を先頭に移動するサンプルです。
4 | private void ScrollToTop(DataGrid dgTgt) |
6 | if (0 < dgTgt.Items.Count) |
9 | var child = VisualTreeHelper.GetChild(dgTgt, 0) as Decorator; |
12 | var scroll = child.Child as ScrollViewer; |
関連があると思われる記事:
[`google_buzz` not found]
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`grow` not found]