2009-09-12 5 views
1

Je souhaite naviguer dans ma fenêtre avec la touche fléchée. Cela fonctionne jusqu'à présent mais si j'atteins la fin de ma fenêtre, concentrez-vous sur le premier élément du menu principal. Mais je veux que la mise au point s'arrête au dernier contrôle dans ma fenêtre.WPF: KeyboardNavigationMode.Contained ne fonctionne pas pour supprimer le focus wrap

private void Window_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Down) 
    { 
    elem.MoveFocus(FocusNavigationDirection.Next); 
    } 
} 

"elem" est un contrôle enfant indirect de "stackPanel". MoveFocus renvoie toujours vrai et j'ai déjà essayé: KeyboardNavigation.SetTabNavigation (stackPanel, KeyboardNavigationMode.Contained); KeyboardNavigation.SetDirectionalNavigation (stackPanel, KeyboardNavigationMode.Contained); KeyboardNavigation.SetControlTabNavigation (stackPanel, KeyboardNavigationMode.Contained);

Rien n'a aidé.

Répondre

0

Comment utiliser une instance TraversalRequest?

if (e.Key == Key.Down) 
{ 
    e.Handled = true; 
    elem.MoveFocus(new TraversalRequest 
    { 
     FocusNavigationDirection = FocusNavigationDirection.Next, 
     Wrapped = false 
    }); 
} 

Rappelez-vous, le MSDN documentation for TraversalRequest.Wrapped dit qu'il est faux par défaut, l'accent ne devrait pas envelopper de toute façon.

+0

J'ai maintenant essayé mais cela n'a pas fonctionné. Après avoir traversé tous mes contrôles, il continue avec les éléments du menu principal de ma fenêtre principale. – codymanix

Questions connexes