Comment mettre en œuvre zone de texte.InputScope dans WPF
Je suis à la recherche d'un moyen pour mettre en œuvre les InputScope d'une zone de texte comme cela se fait dans Wp7, mais l'utilisation classique de WPF.
Ce que je veux réaliser est que l'entrée est limitée à uniquement utiliser des nombres décimaux.
Comment puis-je y parvenir?
<TextBox Text="{Binding Amount, Mode=TwoWay}" InputScope="Number"/>
InputScope est un attribut valide pour classique WPF, mais malheureusement, il ne semble pas fonctionner.
- Est ce lien toute utilisation stackoverflow.com/questions/1103765/... ?
Vous devez vous connecter pour publier un commentaire.
InputScope n'a pas la force de tout type de validation ou de restriction à l'entrée. C'est une allusion à l'entrée de processeurs (eg. sur les claviers à l'écran, reconnaissance de la parole), de la nature des données qui peuvent être saisies dans un contrôle.
Cette valeur n'est utilisée que si un IME (comme un clavier à l'écran) est activé.
Même dans WP7, InputScope ne pas restreindre les valeurs peuvent être entrées dans une zone de texte. Vous pouvez toujours entrer des caractères indésirables si vous pouvez installer un processeur d'entrée, qui ignorait InputScope.
Si vous voulez restreindre la saisie de texte à des personnages spécifiques, vous devrez utiliser un MaskedTextBox ou d'intercepter les frappes des événements. Le code sera également plus facile à comprendre.
Il peut être possible d'utiliser InputManager de PreProcessInput événement pour filtrer les événements d'entrée à l'aide de la InputScope mais il n'est probablement pas la peine de l'effort.
Il n'est pas intégré dans la façon de le faire.
Vous aurez besoin d'écrire un peu de code pour obtenir ce que vous cherchez.
Voici un exemple de ce que vous devez faire: WPF Maskable zone de texte pour les Valeurs Numériques
Je n'ai pas utilisé InputScope, cependant, à partir de la documentation MSDN (ici, ici, ici et ici), il apparaît que WPF entrée du champ d'application nécessite une plus compliqué d'entrée par exemple
xmlns:swi
doit être mappé àSystem.Windows.Input
.(Regex chaîne trouvé sur Google, je n'ai pas vérifié.)
Ou peut-être:
messageWrite est une zone de texte nom. Il limite à partir de A-F et 0-9. L'utilisateur peut le modifier 🙂