2010-11-17 40 views
34

Dans la documentation officielle de Microsoft, il n'y a qu'un seul paragraphe mentionnant comment les contrôles se comportent au clavier (au moins ce que je pouvais trouver):Existe-t-il une référence des comportements de clavier par défaut pour les contrôles Silverlight 4?

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

Texte d'entrée et contrôles

Certains contrôles réagissent pour gérer les événements avec leur propre gestion. Par exemple, un TextBox est un contrôle conçu pour capturer puis représenter visuellement du texte saisi à l'aide du clavier. Il utilise KeyUp et KeyDown dans sa propre logique pour capturer les frappes, puis déclenche également son propre événement TextChanged si le texte effectivement changé. Vous pouvez toujours ajouter des gestionnaires pour KeyUp et KeyDown à un TextBox, ou n'importe quel contrôle connexe destiné à traiter la saisie de texte. Toutefois, dans le cadre de la conception prévue, un contrôle peut ne pas répondre à toutes les valeurs clés qui lui sont adressées via des événements clés. Le comportement est spécifique à chaque contrôle. Par exemple, ButtonBase (classe de base pour Button) traite KeyUp pour qu'il puisse rechercher la touche ESPACE ou la touche ENTRÉE, qu'il considère équivalente à un bouton gauche de la souris pour déclencher un événement Click. Ce traitement de l'événement est accompli par ButtonBase remplaçant la méthode virtuelle OnKeyUp, et dans son implémentation il définit Handled = true. Le résultat est que tout parent d'un bouton écoutant un événement clé dans le cas d'une barre d'espace ne recevrait pas l'événement déjà géré pour ses propres gestionnaires. TextBox est un autre exemple. Certaines clés telles que les touches de direction ne sont pas considérées comme du texte par TextBox et sont à la place considérées comme spécifiques au comportement de l'interface utilisateur de contrôle, et la zone de texte marque ces cas d'événements comme étant gérés.

Les contrôles personnalisés peuvent implémenter leur propre comportement de remplacement similaire pour les événements clés en remplaçant OnKeyDown/OnKeyUp. Si votre contrôle personnalisé traite des raccourcis clavier 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 remplacements OnKeyDown/OnKeyUp.

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

Par exemple, dans un AutoCompleteBox vous pouvez accéder à des suggestions en appuyant sur haut/bas et choisissez l'une en appuyant sur Entrée, etc, etc.

Il doit sûrement y avoir une meilleure façon que de se concentrer chaque contrôle unique et en appuyant sur chaque touche du clavier pour savoir :)

+0

cela aiderait peut-être .... http: // www. dummies.com/how-to/content/silverlight-4-for-dummies-cheat-sheet.html – Aeonius

Répondre

1

Regardez dans le code source \ Reflector.

Il y a beaucoup de bizarreries dans le traitement des textes de contrôles, 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 quand il y a du texte à l'intérieur du contrôle, mais se déclenche quand il n'y a pas de texte, etc. Le moyen le plus rapide est de creuser dans la source.

J'ai pensé une bonne règle: si pour une raison ou pour une autre, vous devez savoir comment un contrôle se comportera, ne perdez pas votre temps à essayer de coder (reproduire) cette situation, obtenez Reflector et regardez le code source .

+0

Je marque ceci comme réponse acceptée car jusqu'ici c'est la manière la plus robuste, mais j'espère secrètement qu'il y a au moins une référence de la foule-out là-bas ... :) – dain

1

Voici le lien pour les coupes courtes officielles ms, http://support.microsoft.com/kb/126449 tThey sont ajoutées à Windows 8 http://www.itworld.com/software/203881/windows-8-metro-keyboard-shortcuts-and-tips espérons que cette aide

+0

C'est presque ça :) Je suppose que les contrôles Silverlight doivent plus ou moins suivre les directives de conception de Windows, donc c'est une bonne idée, mais il semble que cette référence a plus de raccourcis clavier globaux et surtout des combinaisons de touches :( – dain