Le problème avec le fait d'essayer d'intercepter et de piéger tous les événements qui pourraient causer une zone de texte.Texte de la propriété de changer, c'est que il ya beaucoup de ces événements:
- TextInput: les types d'Utilisateurs
- KeyDown: Supprimer, retour arrière, Entrée, IME
- Commande Gestuelle: Ctrl-X, Ctrl-A, Ctrl-V Ctrl-X
- MouseDown: bouton Coller, Couper bouton, bouton d'Annulation, ...
- Cliquez sur: barre d'Espace enfoncée lorsque vous Coller, Couper, Défaire les boutons ont vocation locale
- RaiseEvent: Code soulève Coller, Couper, Défaire, Refaire des commandes
- Accessiblité: commandes Vocales, les claviers en Braille, etc
En essayant d'intercepter de manière fiable toutes ces est un exercice futile. Une bien meilleure solution est de surveiller la zone de texte.TextChanged et rejeter les modifications que vous n'aimez pas.
Dans cette réponse , je montre comment mettre en œuvre une TextBoxRestriction classe pour le scénario particulier posées à propos de. Cette même technique peut être généralisée pour une utilisation avec toutes les restrictions que vous souhaitez placer sur votre contrôle de zone de texte.
Par exemple, dans votre cas, vous pourriez implemnt un RestrictValidChars
de la propriété attachée de la même manière à l' RestrictDeleteTo
propriété dans le code. Il serait le même, sauf que la boucle interne serait de vérifier les insertions, les supprime pas. Il serait utilisé comme ceci:
<TextBox my:TextBoxRestriction.RestrictValidChars="0123456789" />
C'est juste une idée de comment il pourrait en être traitées. Il existe de nombreuses façons de structurer votre code en fonction de ce que vous voulez. Par exemple, vous pouvez changer TextBoxRestriction pour appeler votre propre code pour valider à l'aide d'une propriété attachée qui prend un délégué ou d'un objet contenant un événement.
Voir les autres répondre pour plus de détails sur la façon de lier la propriété de Texte lorsque vous utilisez le TextBoxRestriction classe afin de ne pas déclencher la restriction lorsque vous ne voulez pas qu'il.