2017-04-21 84 views
0

私はWPFフォームの他のコントロールの中にListviewを持っています。コントロール間でTabキーを押すとListViewにフォーカスが当てられますが、自動的にListView Itemがフォーカスされ、ListView自体ではなく、キーボードを使用してアイテム間を移動できます。WPF - キーボードフォーカスをTabのようなListViewアイテムに設定する

ユーザーがListView内の空白領域をクリックしたときと同じ動作が必要です。だから私は、ListViewのClickイベントを作成したが、実行するコードがわからない。私が試してみました;

ListView.Focus(); 
Keyboard.Focus(ListView); 

しかし、いつものListView自体が完全に項目を含むともう動作しません。また、周りのタブ移動と焦点を当て、集中無効偽=フォーカス可能にListViewコントロールを設定する..私は推測する理にかなっている、注目しています。

OnClickイベントでタブのフォーカス動作を再作成するにはどうすればよいですか?

+0

あなたの代わりに 'ListView'自身の' ListViewItem'最初の選択/注力してみましたか? – janonimus

答えて

3

あなたはListViewで最初の項目を集中しようとすることができます:

ListView.SelectedIndex = 0; 
ListViewItem lvi = ListView.ItemContainerGenerator.ContainerFromIndex(0) as ListViewItem; 
if (lvi != null) 
    lvi.Focus(); 
+0

それに感謝します。しかし、これはListViewをフォーカスするためにタブを押したときに実行されるとは思いませんか? ListViewに「タブフォーカス」を呼び出すだけの関数はありませんか?私はちょうどそれをテストし、それは完全に動作します! – Bastiaan

+0

ListViewで 'タブフォーカス'を調整する必要はありません。 ListViewItemにフォーカスを当てたいとします。マウスクリックはタブ移動と同じではないので、なぜこのアプローチがこの場合にはうまくいかないのか分かりません。 – mm8

+0

これは完全に動作します。フォーカスを当てるときにこのコードが実際にListViewに対して実行されるのかどうか疑問に思うだけです。 私は今、唯一の問題は実際のツリービュー項目をクリックするとこのコードも実行されることです。私は(送信者、getType()!= typeof(TreeViewItem)、しかし、私は彼らが独立して発射すると思います – Bastiaan

関連する問題