Entrée d'utilisateur et architecture de présentation
Lors de la génération d'un concepteur, plusieurs problèmes doivent être résolus concernant les entrées d'utilisateur. Par exemple, le contrôle du focus des éléments, le routage des entrées de la souris et du clavier, l'ajout d'ornements et l'appel de commandes doivent tous avoir un mécanisme commun et centralisé de gestion des entrées d'utilisateur. Dans Concepteur WPF pour Visual Studio, la classe DesignerView assure la gestion de tous ces problèmes. Il s'agit de la classe qui représente l'aire de conception principale.
Ornements
Les ornements sont des éléments visuels qui apparaissent uniquement en mode Design et sont utilisés pour faciliter le processus de conception. Par exemple, les poignées de redimensionnement autour d'un contrôle, lorsque le contrôle est sélectionné, sont un exemple d'ornement. La classe DesignerView contient une collection Adorners dans laquelle il est possible d'ajouter des ornements et de les utiliser en mode Design. Pour plus d'informations sur les ornements, consultez Architecture d'ornement.
Routage des entrées
La classe DesignerView fournit une méthode centralisée standard pour router les entrées d'utilisateur. Le traitement des entrées se compose des étapes générales suivantes :
Événement d'entrée
Réalisation d'un test d'atteinte
Recherche d'une liaison d'entrée
Exécution de la liaison de commande
Les sections ci-dessous présentent ces étapes plus en détail.
Événement d'entrée
Lorsqu'un événement d'entrée se produit, il est routé vers la classe DesignerView, dans laquelle le test d'atteinte est exécuté.
Réalisation d'un test d'atteinte
Lorsqu'un événement d'entrée arrive dans l'instance de la classe DesignerView, une analyse de test d'atteinte est exécutée. Le test d'atteinte analyse les effets visuels à la fois dans la couche d'ornement et la hiérarchie d'objets, puis retourne les informations suivantes :
l'ornement sur lequel se trouve la souris ;
l'élément de modèle auquel l'ornement est associé ;
l'effet visuel sur lequel se trouve la souris, s'il ne s'agit pas d'un ornement ;
l'élément de modèle associé à l'effet visuel.
Recherche d'une liaison d'entrée
Après le test d'atteinte, la classe DesignerView essaie de faire correspondre un événement d'entrée à une liaison d'entrée. L'algorithme utilisé pour rechercher une liaison d'entrée varie en fonction de l'état actuel du concepteur :
Si l'outil actuellement actif a une tâche active, seules les liaisons d'entrée de cette tâche sont recherchées comme liaison correspondant à l'événement d'entrée.
Pour les entrées de la souris, la classe DesignerView examine l'ornement sur lequel le test d'atteinte a été effectué, pour rechercher une tâche qui a une liaison d'entrée correspondant à l'événement d'entrée. Si une capture a été prise, l'ornement utilisé est l'ornement qui a subi le test d'atteinte lorsque la capture a été prise. Si aucun ornement n'a subi de test d'atteinte, la classe DesignerView examinera une à une les liaisons d'entrée des tâches contenues dans l'outil actif.
Pour les entrées au clavier, la classe DesignerView examine une à une les liaisons d'entrée des tâches contenues dans l'outil actif. Les liaisons d'entrée au clavier sur des ornements sont ignorées.
Notes
Les touches de modification pour les entrées de la souris ne sont pas ignorées. Les touches de modification fonctionnent correctement avec les entrées de la souris.
Exécution de la liaison de commande
Une fois qu'une liaison d'entrée est obtenue, la méthode Execute est appelée sur la commande dans la liaison. Toutefois, les commandes sont des interfaces, si bien que le comportement de la commande Execute dépend de l'implémentation de cette commande.