2010-01-28 6 views
0

J'ai problème avec le focus du clavier. Voilà comment cela fonctionne maintenant (pas correctement):WPF KeyboardFocus Popup problème

  1. TextBox
  2. MyControl
  3. si MyControl.PopupShowed puis GOTO 1. 4. GOTO autre
  4. ComboBox

I vouloir par Popup Close pour continuer avec le dernier onglet, c'est-à-dire passer de 3 à 4.

Comment pourrais-je faire ça, s'il vous plaît?

<Window> 
... 
<TextBox /> 

<MyControl> 
    ... 
    <Popup> 
    </Popup> 
</MyControl> 

<ComboBox /> 
... 
</Window> 


FocusableProperty.OverrideMetadata(typeof(ListPicker), new FrameworkPropertyMetadata(true)); 

Répondre

1

Voici une façon de faire ce genre de chose. Si cela ne vous convient pas, vous pourriez probablement l'adapter à vos besoins. Configurer un gestionnaire d'événement pour la touche enfoncée (peut-être sur la fenêtre). Si vous trouvez que l'événement est géré lorsque vous appuyez sur la touche de tabulation, utilisez une touche d'aperçu vers le bas.

internal void OnKeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Tab && MyControl.PopupShowed) 
     { 
      MyControl.ClosePopup() 
      window.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)); 
      e.Handled = true; 
     } 
    }