- 2013-03-12 (火) 13:24
- WPF
DataGridでのスクロール位置制御は意外と面倒です。
「DataGridのメソッドを1つ読んで終了!」とはいきません。
大まかな手順は次のようになります。
- VisualTreeからScrollViewerオブジェクトを取得
- ScrollViewerオブジェクトによりスクロール制御
VisualTreeからScrollViewerオブジェクトを取得
DataGridのVisualTreeを辿り、ScrollViewerオブジェクトを取得します。
子オブジェクトの取得にはVisualTreeHelperクラスのGetChildメソッドを使用します。
var child = VisualTreeHelper.GetChild(dgTgt, 0) as Decorator; var scroll = child.Child as ScrollViewer;
ScrollViewerオブジェクトによりスクロール制御
取得したScrollViewerオブジェクトを使ってスクロール制御します。
例えば、先頭までスクロール移動したい場合はScrollToTopメソッドを使用します。
scroll.ScrollToTop();
サンプルコード
スクロール位置を先頭に移動するサンプルです。
// // 先頭に移動する。 // private void ScrollToTop(DataGrid dgTgt) { if (0 < dgTgt.Items.Count) { //==== ScrollViewerオブジェクト取得 ====// var child = VisualTreeHelper.GetChild(dgTgt, 0) as Decorator; if (child != null) { var scroll = child.Child as ScrollViewer; if (scroll != null) { //==== 先頭に移動 ====// scroll.ScrollToTop(); } } } }
関連があると思われる記事:
- [WPF] DataGrid 指定セルにフォーカス移動
- [WPF] DataTemplateの中のコントロール取得
- [WPF] DataGrid ヘッダー背景色の設定
- [Android] ScrollViewのスクロールいろいろ
- [Java] 現在日時の取得
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://gacken.com/wp/program/wpf/2482/trackback/
- Listed below are links to weblogs that reference
- [WPF] DataGridのスクロール制御 from ミライニトドケ