Remplacer la touche entrée, mais garder comportement par défaut pour les autres touches, dans une wpf datagrid
- Il vraiment me dérange que le en appuyant sur la touche entrée dans un Datagrid déplace la sélection d'un élément vers le bas, je voudrais être en mesure de décider ce qu'il fait normale dans un événement keydown.
Donc ce que j'ai fait a été de créer une nouvelle classe qui hérite de la grille de données et d'ignorer l'événement OnKeyDown et de l'utiliser comme mon datagrid.
Cela crée une toute nouvelle série de problèmes, puisque apparemment je me réécrire toutes les autres touches (touche de la flèche de navigation, les touches maj+flèche de sélection de clé, pgup/pgdn, etc..). J'ai essayé de le pirater, mais il semble donc inutile de dépenser temps à réécrire ce qui a déjà été écrit, et probablement mieux que tout ce que je vais trouver.
Alors, comment puis-je faire la touche entrée de faire ce que je veux sans jouer avec les autres affectations de touches par défaut de la grille de données?
Merci d'avance
OriginalL'auteur Steinthor.palsson | 2011-04-12
Vous devez vous connecter pour publier un commentaire.
Il suffit de vérifier si la touche pressée est d'entrer, si elle n'est pas, appelez la base de gestionnaire d'événement KeyDown (quelque chose comme
base.OnKeyDown(sender, args);
)OriginalL'auteur Anthony Vallée-Dubois
Vous aurez besoin de lier un
PreviewKeyDown
gestionnaire de la grille de données manuellement, puis vérifiez si la valeur de la clé estKey.Enter
.Si oui,
e.Handled = true
.Oui, sur le contrôle datagrid atleast. N'est-ce pas l'effet désiré?
Peut-être que je n'étais pas assez claire, je ne veux pas la valeur par défaut comportement de la touche entrée, mais je veux toujours être en mesure de l'utiliser dans un événement KeyDown pour exécuter mes propres fonctions.
OriginalL'auteur Robin Maben
Beaucoup plus simple de mise en œuvre. L'idée est de capturer l'événement keydown et si la clé est "Enter",
décider dans quelle direction vous souhaitez parcourir.
FocusNavigationDirection a plusieurs propriétés sur la base de laquelle la mise au point peut être modifié.
OriginalL'auteur Hunter
Si cela fonctionne semblable à winforms, pour les touches que vous n'êtes pas de la manipulation, que le drapeau traité comme faux, et il va passer la clé, appuyer sur le long.
KeyEventArgs Classe
Traitées Obtient ou définit une valeur qui indique l'état actuel de la gestion d'événement pour un événement routé les voyages de la route. (Héritée de RoutedEventArgs.)
OriginalL'auteur mservidio
PreviewKeyDown
avecHandled = true
est un mauvais solution. Il serait arrêter la manipulation de la Clé sur le tunneling phase et de ne jamais la bulle de l'événement. Simplement parlant, il mange de tout Saisir de touches. Cela signifie que la partie supérieure des panneaux, ne se seraient jamais obtenirKeyDown
événement (imaginez que votre Fenêtre accepte quelque chose sur ENTERKeyDown
...).La bonne solution est ce que Anthony a suggéré: pour quitter le
Handled = false
, -- donc il continue de bouillonner -- et passez de manutention Entrer à l'intérieur de DataGridOriginalL'auteur epox