Pourquoi ne PreviewTextInput gère pas les espaces?
Je suis de la manipulation de la PreviewTextInput événement sur ma fenêtre pour gérer le passage des doigts à partir d'un lecteur de carte magnétique. J'ai la poignée de l'événement sur la fenêtre, de sorte qu'il n'a pas d'importance qui contrôle individuel est porté.
Une fois que le gestionnaire détermine un balayage a commencé (un '%' ou ';' est une entrée), il gère tous les événements jusqu'à ce que le balayage est terminé. Ce système fonctionne généralement assez bien, avec quelques exceptions importantes:
Lorsqu'un caractère espace (et, éventuellement, d'un caractère \n) a l'entrée du lecteur, ils ne sont pas gérées par PreviewTextInput, mais les messages sont envoyés directement dans n'importe quel contrôle est concentré. Curieusement, le gestionnaire n'recevoir \r caractères. Cela provoque un comportement indésirable.
Ce que je veux, c'est un moyen de capturer la tous événements clés au niveau de la fenêtre, et la possibilité de gérer eux si je veux. J'ai essayé PreviewKeyDown et l'a trouvé un peu lourd à utiliser, et pour obtenir char valeurs de. PreviewTextInput est beaucoup plus agréable parce que je peux simplement lire le Texte de la propriété.
Est-il une raison PreviewTextInput ne gère pas certains caractères? Est-il comparable méthode pour obtenir tous les événements, y compris les espaces?
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé une sorte d'explication dans cette WPF forum question:
Et certains plus d'info de l' La documentation MSDN de l'événement TextInput:
BTW, Voici deux questions connexes:
Une solution de contournement que j'ai trouvé est à crochet
PreviewKeyDown
au lieu dePreviewTextInput
. Malheureusement, cette approche requiert beaucoup plus d'habillage pour obtenir un béton char pour ce qu'ils ont appuyé sur le bouton. Le moyen le plus fiable que j'ai trouvé était dans cette question. Il se sent assez lourd pour ce que je pense, devrait être plutôt simple. Quelqu'un a une meilleure manière de faire ceci?