Dans Winforms, je pouvais gérer l'événement validé pour faire quelque chose après le changement de texte de l'utilisateur dans une zone de texte. Contrairement à TextChanged, validés n'a pas été incendié pour chaque changement de caractère; Il n'a tiré que lorsque l'utilisateur a été fait. P>
Y a-t-il quelque chose dans WPF que je peux utiliser pour obtenir le même résultat, un événement soulevé uniquement une fois que l'utilisateur est fait em> changer le texte? p>
4 Réponses :
LostFocus tirera le feu lorsque l'utilisateur se déplace de votre zone de texte sur un autre contrôle. P>
Vous pouvez également essayer de reliure.validationrules P>
documenté à: http: // msdn.microsoft.com/en-us/library/system.windows.data.binding.validationrules.aspx p>
Voici l'article pour commencer: P>
Comment mettre en œuvre des validations de liaison: P>
Il semble qu'il n'y ait pas de solution indigène. L'événement LostFocus est une bonne idée. Mais lorsque l'utilisateur cliquez sur Entrée, il souhaite que la zone de texte valide le changement. Donc, voici ma suggestion: utilisez l'événement LostFocus et l'événement de la clé à suivre lorsque la touche est entrée.
private void TextBox_LostFocus(object sender, RoutedEventArgs e) { // code to lauch after validation } private void TextBox_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { // call the LostFocus event to validate the TextBox ((TextBox)sender).RaiseEvent(new RoutedEventArgs(TextBox.LostFocusEvent)); } }
Faites attention qu'un clic sur un bouton, etc. est exécuté avant l'événement de mise au point perdu. Utilisez plutôt LostkeyboardFocus à la place.
Lostfocus n'est pas équivalent à valider. Il crée beaucoup de problème lorsque vous avez plusieurs zones de texte sur un écran et chaque zone de texte a une logique écrite dans Validate. Lors de la validation de l'événement, vous pouvez contrôler la mise au point facilement, mais pas dans LostFocus si facilement. p>