我想使用箭头键在我的窗口中导航。它到目前为止有效,但如果我到达窗口的末尾,焦点将换行到第一个主菜单项。但我希望焦点停留在我窗口中的最后一个控件上。
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Down)
{
elem.MoveFocus(FocusNavigationDirection.Next);
}
}
“elem”是“stackPanel”的间接子控件。 MoveFocus 始终返回 true 并且我已经尝试过: KeyboardNavigation.SetTabNavigation(stackPanel, KeyboardNavigationMode.Contained); KeyboardNavigation.SetDirectionalNavigation(stackPanel,KeyboardNavigationMode.Contained); KeyboardNavigation.SetControlTabNavigation(stackPanel, KeyboardNavigationMode.Contained);
没有任何帮助。
最佳答案
使用 TraversalRequest 怎么样?实例?
if (e.Key == Key.Down)
{
e.Handled = true;
elem.MoveFocus(new TraversalRequest
{
FocusNavigationDirection = FocusNavigationDirection.Next,
Wrapped = false
});
}
请注意,MSDN documentation for TraversalRequest.Wrapped说默认情况下它是假的,所以无论如何焦点都不应该换行。
关于c# - WPF:KeyboardNavigationMode.Contained 无法抑制焦点环绕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1416360/