Benutzereingabe und Präsentationsarchitektur
Beim Erstellen eines Designers sind in Bezug auf die Benutzereingabe verschiedene Fragen zu lösen. Die Steuerung des Elementfokus, das Routing von Maus- und Tastatureingaben, das Hinzufügen von Adornern und das Aufrufen von Befehlen erfordern z. B. einen gemeinsamen und zentralen Mechanismus für die Behandlung von Benutzereingaben. Im WPF Designer für Visual Studio werden all diese Aspekte von der DesignerView-Klasse verwaltet. Hierbei handelt es sich um die Klasse, welche die primäre Entwurfsoberfläche darstellt.
Adorner
Adorner sind visuelle Elemente, die nur in der Entwurfsansicht angezeigt werden und den Entwurfsvorgang unterstützen sollen. So sind Ziehpunkte um Steuerelemente, die angezeigt werden, wenn das Steuerelement ausgewählt wird, ein Beispiel für einen Adorner. Die DesignerView-Klasse enthält eine Adorners-Auflistung. Dieser Auflistung können Sie in der Entwurfsansicht Adorner hinzufügen und diese anschließend in der Entwurfsansicht verwenden. Weitere Informationen über Adorner finden Sie unter Adorner-Architektur.
Eingaberouting
Die DesignerView-Klasse stellt eine zentrale Standardmethode für das Routing von Benutzereingaben bereit. Der Eingabeprozess umfasst die folgenden allgemeinen Schritte:
Ein Eingabeereignis tritt auf.
Es wird ein Treffertest ausgeführt.
Eine Eingabebindung wird gesucht.
Eine Befehlsbindung wird ausgeführt.
Diese Schritte werden in den folgenden Abschnitten ausführlicher erläutert.
Ein Eingabeereignis tritt auf
Wenn ein Eingabeereignis auftritt, wird es an die DesignerView-Klasse weitergeleitet, in der ein Treffertest ausgeführt wird.
Ausführen des Treffertests
Wenn ein Eingabeereignis zur DesignerView-Instanz gelangt, wird ein Treffertestscan ausgeführt. Beim Treffertest werden visuelle Strukturen auf der Adornerebene und in der Objekthierarchie gescannt, und die folgenden Informationen werden zurückgegeben:
Der Adorner, über dem sich die Maus befindet.
Das Modellelement, dem der Adorner zugeordnet ist.
Das visuelle Element, über dem sich die Maus befindet, falls es sich nicht um einen Adorner handelt.
Das dem visuellen Element zugeordnete Modellelement.
Suchen einer Eingabebindung
Nach dem Treffertest versucht DesignerView, ein Eingabeereignis einer Eingabebindung zuzuordnen. Der Algorithmus zum Suchen einer Eingabebindung ändert sich je nach dem aktuellen Zustand des Designers:
Wenn das aktuell aktive Tool eine aktive Aufgabe hat, werden nur die Eingabebindungen dieser Aufgabe nach einer Bindung durchsucht, die dem Eingabeereignis entspricht.
Bei Mauseingaben untersucht DesignerView den auf Treffer getesteten Adorner nach einer Aufgabe mit einer Eingabebindung, die dem Eingabeereignis entspricht. Wenn eine Aufzeichnung erstellt wurde, ist der verwendete Adorner derjenige, der beim Erstellen der Aufzeichnung auf Treffer getestet wurde. Wurde kein Adorner auf Treffer getestet, geht DesignerView die Eingabebindungen der Aufgaben durch, die im aktiven Tool enthalten sind.
Bei Tastatureingaben geht DesignerView die Eingabebindungen der Aufgaben durch, die im aktiven Tool enthalten sind. Tastatureingabebindungen auf Adornern werden ignoriert.
Tipp
Zusatztasten für die Mauseingabe werden nicht ignoriert. Zusatztasten funktionieren bei der Mauseingabe problemlos.
Ausführen der Befehlsbindung
Sobald eine Eingabebindung abgerufen wird, wird die Execute-Methode für den Befehl in der Bindung aufgerufen. Befehle sind jedoch Schnittstellen, daher hängt das Verhalten von Execute von der Implementierung des betreffenden Befehls ab.