Autoriser uniquement les entrées numériques dans la zone de texte WPF
Je souhaite valider la saisie par l'utilisateur pour s'assurer qu'ils sont des entiers. Comment puis-je le faire? J'ai pensé à utiliser IDataErrorInfo
ce qui semble être la "bonne" façon de faire de la validation en WPF. J'ai donc essayé de la mettre en œuvre, dans mon ViewModel.
Mais le truc, c'est ma zone de texte est lié à un champ de type entier, et il n'y a pas besoin de valider si une int
est un int
. J'ai remarqué que WPF ajoute automatiquement une bordure rouge autour de la zone de texte pour informer l'utilisateur de l'erreur. La propriété sous-jacente ne change pas une valeur non valide. Mais je tiens à avertir l'utilisateur de la ce. Comment puis-je le faire?
source d'informationauteur Jiew Meng
Vous devez vous connecter pour publier un commentaire.
La bordure rouge que vous avez vu est en fait un ValidationTemplate, qui vous permettent d'étendre et d'ajouter une info pour l'utilisateur. Voir cet exemple:
Une autre manière est tout simplement de ne pas permettre à des valeurs qui ne sont pas entiers.
La suite de la mise en œuvre est un peu sucky, et je voudrais le résumé plus tard, dans l'ordre pour qu'il soit plus réutilisable, mais voici ce que j'ai fait:
dans le code derrière, à mon avis (je sais que ça peut faire mal si vous êtes un hardcore mvvm ;o) )
J'ai défini les fonctions suivantes :
Et dans le code XAML vue, chaque zone de texte qui ne devait accepter entiers
a été défini comme ceci:
L'attribut de clé étant PreviewTextInput
Nous pouvons faire la validation sur la zone de texte modifié de l'événement.
La mise en empêche la pression de touche entrée autres que numériques, et un point décimal.
si vous travaillez dans WPF Mieux utiliser PreviewTextInput événement qui prennent en charge toutes les plates-formes et de presentationcore.dll
voici l'exemple: