34 votes

Existe-t-il une référence des comportements par défaut du clavier pour les contrôles Silverlight 4 ?

Dans la documentation officielle de Microsoft, il n'y a qu'un seul paragraphe qui mentionne le comportement des contrôles au clavier (du moins ce que j'ai pu trouver) :

http://msdn.microsoft.com/en-us/library/cc189015(v=VS.95).aspx#inputting_text

Saisie de texte et contrôles

Certains contrôles réagissent aux événements clavier avec leur propre gestion. Par exemple, une TextBox est un contrôle conçu pour capturer et représenter visuellement le texte saisi au clavier. Elle utilise KeyUp et KeyDown dans sa propre logique pour capturer les frappes, puis déclenche son propre événement TextChanged si le texte a réellement changé. En règle générale, vous pouvez toujours ajouter des gestionnaires pour KeyUp et KeyDown à une TextBox ou à tout autre contrôle connexe destiné à traiter des entrées de texte. Cependant, dans le cadre de sa conception, un contrôle peut ne pas répondre à toutes les valeurs de touches qui lui sont adressées par le biais d'événements de touches. Le comportement est spécifique à chaque contrôle. Par exemple, ButtonBase (classe de base pour les boutons) traite KeyUp de manière à vérifier la présence de la touche SPACEBAR ou ENTER, qu'il considère comme équivalente à l'enfoncement du bouton gauche de la souris dans le but de déclencher un événement Click. Ce traitement de l'événement est réalisé par ButtonBase qui surcharge la méthode virtuelle OnKeyUp et qui, dans son implémentation, définit Handled = true. Il en résulte que tout parent d'un bouton à l'écoute d'un événement de touche dans le cas d'un SPACEBAR ne recevra pas l'événement déjà traité pour ses propres gestionnaires. Un autre exemple est celui de TextBox. Certaines touches, telles que les touches FLECHE, ne sont pas considérées comme du texte par TextBox, mais comme spécifiques au comportement de l'interface utilisateur du contrôle, et TextBox marque ces cas d'événements comme étant gérés.

Les contrôles personnalisés peuvent implémenter leur propre comportement similaire pour les événements de touches en surchargeant OnKeyDown / OnKeyUp. Si votre contrôle personnalisé traite des touches d'accélération spécifiques ou a un comportement de contrôle ou de focus similaire au scénario décrit pour TextBox, vous devez placer cette logique dans vos propres surcharges OnKeyDown / OnKeyUp.

Existe-t-il une référence plus complète ?

Par exemple, dans une boîte d'auto-complétion, vous pouvez naviguer parmi les suggestions en appuyant sur les touches haut/bas et en choisir une en appuyant sur la touche Entrée, etc.

Il doit certainement y avoir un meilleur moyen que de concentrer chaque commande et d'appuyer sur chaque touche du clavier pour le savoir :)

1voto

Alex Burtsev Points 4251

Rechercher dans le code source \NReflector.

Il y a beaucoup de bizarreries dans les contrôles de traitement de texte, je doute que quelqu'un se soucie de documenter cela. Par exemple, l'événement KeyDown de TextBox n'est pas déclenché lorsque l'utilisateur appuie sur BackSpace alors qu'il y a du texte dans le contrôle, mais il est déclenché lorsqu'il n'y a pas de texte, etc. La façon la plus rapide de découvrir comment quelque chose fonctionne est de creuser dans les sources.

J'ai trouvé une bonne règle : si pour une raison ou une autre vous avez besoin de savoir comment un contrôle va se comporter dans une situation donnée, ne perdez pas votre temps à essayer de coder (reproduire) cette situation, prenez simplement Reflector et regardez le code source.

1voto

Ian P Points 1471

Voici le lien pour les raccourcis officiels de ms, http://support.microsoft.com/kb/126449 tIls sont en cours d'ajout pour Windows 8 http://www.itworld.com/software/203881/Windows-8-metro-keyboard-shortcuts-and-tips J'espère que cela vous aidera

0voto

Aeonius Points 484

0voto

Jimmy Points 1303

S'agit-il des drones que vous recherchez ? http://www.silverlight.net/archives/videos/keyboard-control

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X