我有以下的可視化樹:爲什麼UIElement.MoveFocus()不會將焦點移動到ListBox中的下一個兄弟元素?
<DockPanel>
<TextBox Name="ElementWithFocus" DockPanel.Dock="Left" />
<ListBox DockPanel.Dock="Left" Width="200" KeyUp="handleListBoxKeyUp">
<ListBoxItem>1</ListBoxItem>
<ListBoxItem>4</ListBoxItem>
<ListBoxItem>3</ListBoxItem>
<ListBoxItem>2</ListBoxItem>
</ListBox>
<TextBox DockPanel.Dock="Left" />
</DockPanel>
handleListBoxKeyUp
如下:
private void handleListBoxKeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
((UIElement)sender).MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
}
當ListBox
具有鍵盤焦點(真ListBoxItem
我猜),按Enter
將焦點移到ListBox
中的第一項,而不是以下的TextBox
。爲什麼會發生這種情況,我如何才能使Enter
密鑰在Tab
這裏起作用?
這就像一個魅力。感謝您的洞察力。 – codekaizen
也許你可以告訴我爲什麼WPF認爲'ListBoxItem'不僅僅是下一個兄弟'ListBoxItem'後的下一個控件? – codekaizen
如果使用FocusNavigationDirection.Down或FocusNavigationDirection.Up代替Next,焦點將在ListBoxItems上向上/向下移動。接下來似乎擊中與原點不在同一水平的下一個控制器。 –