我有一个简单的应用程序(具有6个按钮的栅格 - 2行的3 - 它用于测试)和正在处理左和右箭头键如下WPF FocusNavigationDirection,MoveFocus和箭头键
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
FocusNavigationDirection focusDirection = new System.Windows.Input.FocusNavigationDirection();
switch (e.Key)
{
case Key.Left:
focusDirection = System.Windows.Input.FocusNavigationDirection.Left;
break;
case Key.Right:
focusDirection = System.Windows.Input.FocusNavigationDirection.Right;
break;
default:
break;
}
TraversalRequest request = new TraversalRequest(focusDirection);
// Gets the element with keyboard focus.
UIElement elementWithFocus = Keyboard.FocusedElement as UIElement;
// Change keyboard focus.
if (elementWithFocus != null)
{
elementWithFocus.MoveFocus(request);
}
}
不幸的是,这并不像我预期的那样行事,因为焦点似乎总是朝着与FocusNavigationDirection指定的方向相反的方向移动。
为什么会这样? MSDN Documentation对于如何定义“左侧”有点含糊。
在它需要的情况下,我也通过6