2010-06-23 4 views
3

J'ai une grille avec beaucoup de TextBoxes et je veux appeler NotifyPropertyChanged() méthode pour mettre à jour d'autres contrôles chaque fois que l'un de ces TextBox-es a changé la valeur = perdu le focus (Je ne veux pas d'utiliser PropertyChanged comme UpdateSourceTrigger)WPF TextBox lostfocus en tant que propriété jointe

C'est ce que je peux faire:

<Grid TextBoxBase.TextChanged="My_TextChanged" > 
... 
</Grid> 

je besoin de quelque chose comme:

TextBoxBase.OnLostFocus 

Répondre

0

Utilisez l'événement de mise au point perdu

TextBox.LostFocus="OnTextBoxLostFocus" 

Filtrer sur textboxes;)

private void OnTextBoxLostFocus(object sender, RoutedEventArgs e) 
{ 
    if(!(e.OriginalSource is TextBox)) 
     return; 

    //Do stuff 
} 

Si vos propriétés ne sont pas modifiés, vos zones de texte ne seront pas mis à jour cependant. Vous devriez envisager de muter les données auxquelles ces autres TextBox sont liés, au lieu d'utiliser LostFocus pour mettre à jour votre modèle.

Bonne chance!

0

TextBoxBase.LostFocus est, je le soupçonne, l'événement que vous recherchez.

Il est répertorié ici: http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.textboxbase_events.aspx - mais il est défini sur UIElement - vous pouvez donc vouloir essayer UIElement.LostFocus si ce qui précède ne fonctionne pas dans le balisage.

+0

Je reçois une erreur que LostFocus n'a pas été trouvé dans TextBoxBase –

+0

Modifié pour corriger (désolé, ne peut pas tester à partir d'ici). –

+0

Vous ne pouvez pas définir UIElement en tant que propriété attachée à la grille. –

Questions connexes