2010-07-30 5 views

Répondre

4

// PROBLÈME: en cliquant sur btns ne force pas LostFocus événement sur le dernier contrôle de l'élément entré (dernier contrôle d'entrée peut être du texte, case à cocher ou autres) ajouté le bouton Enregistrer, où appeler cette méthode, il déplace le focus vers parent forcer lostfocus sur le dernier élément.

private void btnSave_Click(object sender, RoutedEventArgs e) 
    { 
     AcceptLastFocusedElement(sender, e); 
    } 


    private void AcceptLastFocusedElement(object sender, RoutedEventArgs e) 
    { 
     FocusManager.SetFocusedElement(this, (Button)sender); 
    } 

REMARQUE: inutile d'utiliser la tâche numéro 1 (obtention du nom de l'élément).

+0

Cela fonctionne ... mais pas toujours. J'ai eu un cas où la deuxième fois que nous avons exécuté ce code, il ne causera pas un focus perdu à cause de FocusGroup. La solution dans cette réponse http://stackoverflow.com/a/4724766/197371 a résolu mon problème spécifique –

+0

suis heureux que nous réduisions ces problèmes !. – ramnz

2

Vous pouvez utiliser la méthode LayoutUpdated.

Ainsi, chaque fois qu'un événement se produit, il se produit dans l'événement LayoutUpdated et vous pouvez intercepter le LastFocusObject.

Questions connexes