gpt4 book ai didi

.net - 为什么 UIElement.MoveFocus() 不将焦点移动到 ListBox 中的下一个同级元素?

转载 作者:行者123 更新时间:2023-12-03 18:38:58 30 4
gpt4 key购买 nike

我有以下可视化树:

<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 一样工作?

最佳答案

您应该在事件 args 中找到的原始源上调用它,而不是在发送方上调用 MoveFocus
sender 参数将始终是 ListBox 本身,并且使用 MoveFocus 调用 FocusNavigationDirection.Next 将转到树中的下一个控件,即第一个 ListBoxItem

路由事件的原始来源将是选定的 ListBoxItem ,其后的下一个控件是您希望获得焦点的 TextBox

((UIElement)e.OriginalSource).MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));

关于.net - 为什么 UIElement.MoveFocus() 不将焦点移动到 ListBox 中的下一个同级元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14127577/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com