2017-04-21 20 views
0

내 WPF 양식의 다른 컨트롤 사이에 Listview가 있습니다. 컨트롤 사이에 Tab 키를 놓고 ListView에 포커스를두면 자동으로 ListView 항목이 포커스가 설정되고 ListView 자체는 포커스가 설정되지 않으므로 키보드로 항목 간을 이동할 수 있습니다.WPF - 키보드 포커스를 Tab과 같은 ListView 항목으로 설정

사용자가 ListView에서 빈 영역을 클릭 할 때도 동일한 동작이 필요합니다. 그래서 ListView에 대한 Click 이벤트를 만들었지 만 실행할 코드를 모릅니다. 나는 노력했다.

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

그러나 항상있는 ListView 자체가 완전히 항목을 포함하고 더 이상 작동하지 않습니다 또한 주위 탭 이동과 초점, 초점을 비활성화 = false를 포커스로 ListView를 설정 .. 제 생각 엔 의미가있는 초점을 맞추고 있습니다.

내 OnClick 이벤트에서 Tab 포커스 동작을 다시 만들려면 어떻게해야합니까?

+0

당신이/초점을 시도해 봤어 최초의'ListViewItem' 대신'ListView' 자체를 선택? – 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에 집중하려고합니다. 그리고 마우스 클릭은 tabbing과 같은 것이 아니므로이 접근법이 왜이 경우에 효과가 없는지 실제로 알 수는 없습니까? – mm8

+0

완벽하게 작동합니다. 탭에 집중할 때이 코드가 실제로 ListView에 대해 실행되는지 궁금합니다. 현재 유일한 문제는 실제 트리보기 항목을 클릭하면이 코드도 실행된다는 것입니다. 나는 (보낸 사람, getType()! = typeof (TreeViewItem)),하지만 그들은 독립적으로 발생합니다. – Bastiaan