private void OnPostProcessKey(object sender, KeyEventArgs e) { if (e.Handled) { return; } FocusNavigationDirection navigationDirection; DependencyProperty navigationModeProperty; if (TryGetNavigationMode(e, out navigationModeProperty, out navigationDirection)) { UIElement currentTarget = (UIElement)presentationSource.KeyboardDevice.Target ?? presentationSource.RootElement; UIElement newTarget = (UIElement)KeyboardNavigationTarget.FindTarget(currentTarget, navigationDirection, navigationModeProperty); if (currentTarget != newTarget && newTarget != null) { newTarget.Focus(); } e.Handled = true; } }