2010-12-06 2 views
1

Dans WPF 4.0, je n'arrive pas à utiliser les raccourcis clavier si j'échange le contrôle utilisateur dans la fenêtre après son chargement. Un exemple de code dit mille mots, voici donc ce que je fais:WPF 4 focus clavier: ne jamais recevoir d'événements clés

Window window = new Window { Width = 800, Height = 600 }; 
window.Loaded += delegate 
{ 
    editor = new EditorRoot(); 
    window.Content = editor; 
}; 
app.Run(window); 

window obtient les événements KeyDown (et les commandes en déroute fonctionnent très bien), mais editor ne reçoit aucun événement clavier (ni ne les contrôles en son sein) . J'ai essayé:

editor.Loaded += (sender, e) => Keyboard.Focus(editor); 

... mais cela n'a rien fait. EditorRoot étend UserControl et a IsFocusable=true Toutes les idées quel est le problème?

Répondre

2

Et si cela ne fonctionne pas - utiliser Dispatcher.BeginInvoke. De mon expérience - mise au point synchronisée ne fonctionne pas toujours. Et pas seulement dans WPF 4.

+0

Cela a fonctionné; Merci! –

2

Peut-être que vous pourriez essayer le FocusManager au lieu de votre approche. Je l'utilise et il fonctionne, vous pouvez même l'utiliser en XAML:

  FocusManager.FocusedElement=editor; 
Questions connexes