[WPF] ListViewのSelectedItemと矢印キー

ListViewを使用したプログラムで不具合らしき現象を体験した。

再現状況は以下の通り。

  1. ListViewのitemのいくつかをプログラム中でselectする。
  2. ListViewにfocusがある状態で矢印キーを入力する。

正常な反応はListViewのSelectedItemを起点として移動する動きのはず。しかし、上記の方法では最初のキー入力で必ず先頭の要素に行く。マウスでクリックしたり、矢印キーで移動してSelectした場合は、SelectedItemから移動できる。プログラムからSelectedItemを指定したときのみ、トップ(デフォルト位置)に戻る。

 これではUI的には変な動きになって都合が悪い。どうしたら望みどおりになるかというQ&Aがstackoverflowにあった。
 stackoverflowでは簡単な回答はなく、質問者自身がかなり複雑な処理でできたと報告していた。その方法も上記のリンク先に書かれている。
要約すると、Dispatcher.BeginInvokeを使い、その中でfocusをセットする関数を呼び出す、という方法だ。
広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。