2010-08-12 3 views
4

Je tente d'exécuter certaines commandes WPF à l'aide de la classe WPF KeyGesture. L'application fonctionne bien jusqu'à ce que je spécifie une combinaison de touches composée de Shift modificateur et une clé alphanumérique. Par exemple, après instanciation: new KeyGesture(Key.M, ModifierKeys.Shift) déclenche une exception:KeyGesture n'accepte pas une combinaison de touches Shift + Alphanumérique

'Maj + M' combinaison de touches et de modification ne sont pas pris en charge pour KeyGesture.

nu modificateur Maj ne fonctionne pas avec des chiffres trop (par exemple Maj +). Cependant, Maj +Insérer ou Maj +F1 combinaisons fonctionnent parfaitement. Juste pour mettre clairement, il n'y a aucun problème avec Maj +Ctrl, Maj +Alt ou Alt + et aussi bien.

Pourquoi a-t-on pris la décision d'interdire Shift + Geste [Alphanumérique]? Est-ce que cela a quelque chose en commun avec la saisie de lettres majuscules? Existe-t-il une solution de contournement cohérente avec le système de commandement WPF? (Note:. Je ne cherche pas à utiliser un Maj + M geste, tout en remplissant les zones de texte, mais plutôt quand pas textbox est mise au point)

Je semblent trouver un seul forum entrée, où ce problème est soulevé. Une recherche de documentation a échoué. Est-il si évident pour les développeurs d'éviter Shift + [Alphanumérique]?

+1

Qu'est-ce que l'enfer? POURQUOI? Je viens d'aborder ce problème de front. Le problème est, j'essaie de reproduire la fonctionnalité dans une application héritée (lire: faire de l'argent). –

+0

@lainMH: Eh bien, mes connaissances sur le problème n'ont pas changé depuis le moment où j'ai posté cette question. Je crois que c'est parce que cela entrerait en conflit avec l'insertion de texte dans la plupart des applications. Vous pouvez gérer les combinaisons Maj + touches au niveau de la fenêtre. Mais je pense qu'une meilleure solution consiste simplement à éviter les gestes Majuscules +, car cela ne fonctionnerait que dans des cas particuliers. Si une zone de texte a le focus, la frappe est supposée être traitée comme une saisie de caractères uniquement. Ainsi, vos commandes liées à la touche Maj + fonctionneraient de temps en temps, ce qui rendrait votre client fou. – pbalaga

Répondre

3

Voir SO 8251043 - au fond, ce n'est plus un « geste » est un raccourci clavier Create a simple, unmodified key binding in WPF

+0

Ça marche, merci. Quelle honte, il ne semble pas être documenté nulle part. Comme note supplémentaire - La clé et les modificateurs doivent être définis par l'affectation de propriété (comme indiqué dans le SO 8251043 cité) et * not * transmis au constructeur. Dans le dernier cas, il est converti en un «KeyGesture» et échoue. – pbalaga

Questions connexes