것은 당신이 예를 들어, 항목 컨테이너 형 제어를위한 항목 템플릿으로 귀하의 DataTemplate을 사용하고 있습니까 :
여기 내 데이터 템플릿입니다 ListBox? KeyboardNavigation 클래스를 확인, 당신이 당신의 항목 컨테이너 또는 "주기" "계속"을 설정 자사의 TabNavigation 속성을 할 수 있습니다, 다음과 같이 매끄러운 :
<ListBox x:Name="myListBox"
KeyboardNavigation.TabNavigation="Continue"
ItemTemplate="{StaticResource myDataTemplate}"
...
초점이 목록 상자에서 탭 키를 사용하여 변경, 포커스는 각 요소에서 이동하고 마지막 요소에 도달하면 포커스는 "주기"의 첫 번째 요소로 돌아가거나 "계속"이 설정된 경우 폼의 다음 포커스 가능 컨트롤로 이동합니다. 이 도움이
희망, 안부
edit0 : 메이크업 텍스트 상자 목록 상자 항목이,
<ListBox x:Name="myListBox"
KeyboardNavigation.TabNavigation="Continue"
ItemTemplate="{StaticResource myDataTemplate}"
SelectionChanged="testList_SelectionChanged"
...
/>
private void testList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Dispatcher.BeginInvoke(DispatcherPriority.Normal, new ThreadStart(() =>
{
ListBoxItem item = testList.ItemContainerGenerator.ContainerFromIndex(testList.SelectedIndex) as ListBoxItem;
if (item != null)
{
TextBox textBox = GetDescendantTextBox(item) as TextBox;
if (textBox != null) textBox.Focus();
}
}));
}
public static Visual GetDescendantTextBox(Visual element)
{
if (element == null) return null;
if (element is TextBox) return element;
Visual result = null;
if (element is FrameworkElement)
(element as FrameworkElement).ApplyTemplate();
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(element); i++)
{
Visual visual = VisualTreeHelper.GetChild(element, i) as Visual;
result = GetDescendantTextBox(visual);
if (result != null) break;
}
return result;
}
이 도움이 덕분에 선정 된 직후에 포커스를받을! 하지만 지금은 텍스트 상자 주위에 탭이 보이고 itemcontainer처럼 보입니다. TextBox에 포커스, 모든 아이디어가 있어야만 했나요? – will
listboxitem이 선택 될 때마다 편집 상자에 포커스를 전달하는 것이 좋습니다. 목록 상자의 SelectionChanged 이벤트 처리기로 원래 게시물을 편집했습니다. 그것이 당신을 위해 작동하는지 확인하십시오, 안부 –
대접, 너무 많이 Serge 감사 ... – will