C# WPFのListViewで選択行を見える位置までスクロールする

WPFでリストを一覧表示する時に使われる ListView コントロール。

通常はマウスでリストをスクロールさせて該当のレコードをクリック…といった使い方かと思いますが、時には別の操作がトリガーとなってListView内の特定のレコードを選択させるというような事もあるはずです。

SelectedIndexで選択行は変えられるけど・・・

 

ListView コントロールには SelectedIndexSelectedItem といったプロパティがあり、選択されている行のインデックス番号だったり項目のオブジェクトをセットしてあげる事で、選択行を指定の位置へ変更する事ができます。

 

 選択行は正しく変更されますが、その行がリストの表示範囲外の場合、選択されているのかどうか分からない感じになってしまいます。

ScrollIntoViewで選択行までリストをスクロール

ListView コントロールには ScrollIntoView というメソッドがあります。

このメソッドを使うと目的のレコードが表示領域に入るようリストをスクロールしてくれます。

            TestList.SelectedIndex = 20;
            TestList.ScrollIntoView(TestList.SelectedItem);

 

選択行を変更したらこの ScrollIntoView を呼び出してあげましょう。