Entwerfen benutzerdefinierter Eigenschaften, Ereignisse und Steuerelementmuster

Der Entwurf eines benutzerdefinierten Eigenschaften-, Ereignis- oder Steuerelementmusters sollte in einer Vielzahl von Steuerelementimplementierungen nützlich sein. Steuerungs- oder anwendungsspezifische Designs, die nur in begrenzten Szenarien nützlich sind, sollten vermieden werden. Der Entwurf sollte dem Beispiel der vorhandenen Microsoft Benutzeroberflächenautomatisierung Eigenschaften, Ereignisse und Steuerelementmuster folgen, die sorgfältig angegeben wurden, um die Anforderungen einer Vielzahl von Anwendungen für Barrierefreiheit und automatisierte Tests zu erfüllen.

Die Implementierung der Spezifikation für ein benutzerdefiniertes Eigenschafts-, Ereignis- oder Steuerelementmuster erfordert die Zusammenarbeit und Vereinbarung von Parteien sowohl auf Client- als auch auf Anbieterseite und erfordert, dass beide Parteien die Spezifikation konsistent implementieren. Unternehmen werden empfohlen, mit Branchenorganisationen wie der Accessibility Interoperability Alliance (AIA) zusammenzuarbeiten, um die Spezifikation für das benutzerdefinierte Eigenschaften-, Ereignis- oder Steuerelementmuster zu entwerfen und zu veröffentlichen. Auf diese Weise kann ein Konsens erzielt und die Interoperabilität mit den verschiedensten Anwendungen sichergestellt werden.

Dieses Thema enthält folgende Abschnitte:

Verwendung von benutzerdefinierten Eigenschaften und Ereignissen

Stellen Sie vor dem Erstellen eines benutzerdefinierten Eigenschaften-, Ereignis- oder Steuerelementmusters sicher, dass Benutzeroberflächenautomatisierung keine vorhandene Lösung bereitstellt. Beispielsweise ist das Erstellen eines benutzerdefinierten "Click"-Steuerelementmusters nicht erforderlich, da das Invoke-Steuerelementmuster diese Funktionalität bereits beschreibt.

Wenn Sie entscheiden, dass ein benutzerdefiniertes Eigenschaften-, Ereignis- oder Steuerelementmuster erforderlich ist, stellen Sie sicher, dass es nicht zu vage oder generisch ist. Beispielsweise ist ein Steuerelementmuster mit dem Namen "Show" nicht nützlich, da die Sichtbarkeit eines Steuerelements durch eine Verfügbarkeitseigenschaft für das Element angegeben werden kann, z. B. UIA_IsExpandCollapsePatternAvailablePropertyId oder UIA_IsScrollItemPatternAvailablePropertyId.

Vergewissern Sie sich vor der Implementierung einer benutzerdefinierten Lösung sorgfältig, dass sie benötigt wird, und entwerfen Sie dann die Funktionalität vollständig.

Entwerfen benutzerdefinierter Eigenschaften

Benutzeroberflächenautomatisierung enthält zwei grundlegende Eigenschaftentypen: Automatisierungselementeigenschaften und Steuerelementmustereigenschaften. Die Automatisierungselementeigenschaften bestehen aus einem allgemeinen Satz von Eigenschaften wie Name, AcceleratorKey und ClassName, die unabhängig vom Steuerelementtyp von allen Benutzeroberflächenautomatisierung-Elementen verfügbar gemacht werden. Steuerelementmustereigenschaften werden von einem Steuerelement über ein bestimmtes Steuerelementmuster verfügbar gemacht. Jedes Steuerelementmuster verfügt über einen entsprechenden Satz von Steuerelementmustereigenschaften, die das Steuerelement verfügbar machen muss. Beispielsweise macht ein Steuerelement, das das Grid-Steuerelementmuster unterstützt, die Eigenschaften ColumnCount und RowCount verfügbar.

Eine benutzerdefinierte Automatisierungselementeigenschaft oder Steuerelementmustereigenschaft sollte den folgenden Entwurfsrichtlinien entsprechen:

  • Eine benutzerdefinierte Eigenschaft muss über einen der folgenden Datentypen verfügen, die von der UIAutomationType-Enumeration angegeben werden. Für benutzerdefinierte Eigenschaften werden keine anderen Datentypen unterstützt.
    • UIAutomationType_Bool
    • UIAutomationType_Double
    • UIAutomationType_Element
    • UIAutomationType_Int
    • UIAutomationType_Point
    • UIAutomationType_String
  • Wenn die benutzerdefinierte Eigenschaft Zeichenfolgendaten (BSTR) enthält, muss die Spezifikation angeben, ob die Eigenschaft lokalisierbar ist (d. a. ob die Zeichenfolge in verschiedene Benutzeroberflächensprachen übersetzt werden kann).
  • Die benutzerdefinierte Eigenschaft sollte sich nicht mit den Features oder Funktionen vorhandener Eigenschaften überschneiden.

Entwerfen benutzerdefinierter Ereignisse

Anwendungen verwenden Benutzeroberflächenautomatisierung Ereignisbenachrichtigungen, um auf Änderungen und Aktionen mit Ui-Elementen zu reagieren. Die meisten Eigenschaften weisen zugeordnete Eigenschaftsänderungsereignisse auf, die Benutzeroberflächenautomatisierung ausgelöst werden, wenn sich der Wert der Eigenschaft ändert. Wenn Sie eine benutzerdefinierte Eigenschaft einführen, sollten Sie die Einführung entsprechender benutzerdefinierter Ereignisse in Betracht ziehen, die möglicherweise auch benötigt werden.

Ein benutzerdefiniertes Ereignis sollte den folgenden Entwurfsrichtlinien entsprechen:

  • Das benutzerdefinierte Ereignis muss "zustandslos" sein. Er kann nicht einer bestimmten Eigenschaft oder einem bestimmten Wert zugeordnet werden.
  • Das benutzerdefinierte Ereignis sollte sich nicht mit der Definition oder Rolle eines vorhandenen Ereignisses überschneiden.

Benutzerdefinierte Benutzeroberflächenautomatisierung-Ereignisse und WinEvents

WinEvents sind ein nützlicher Prozesskommunikations- und Ereignismechanismus in der Microsoft Windows-Plattform. Die Einführung einer neuen WinEvent-ID ist jedoch riskant, da sie Zu Konflikten mit anderen Anwendungen oder dem Betriebssystem führen kann, was dazu führen kann, dass das System instabil wird. Um Konflikte zu vermeiden, hat Microsoft mehrere verschiedene Kategorien von WinEvents definiert und für jede Kategorie einen oder mehrere Wertebereiche für die Verwendung als WinEvent-IDs definiert. Weitere Informationen finden Sie unter Zuordnung von WinEvent-IDs.

Benutzerdefinierte Benutzeroberflächenautomatisierung-Ereignisse vermeiden Konflikte, indem die Ereignis-ID intern im Benutzeroberflächenautomatisierung-Framework zugewiesen wird.

Entwerfen benutzerdefinierter Steuerelementmuster

Ein Steuerelementmuster ist eine Schnittstelle mit Eigenschaften, Methoden und Ereignissen, die eine diskrete Funktionalität definieren, die über ein Automatisierungselement verfügbar ist. Steuerelementmustermethoden ermöglichen es Benutzeroberflächenautomatisierung Clients, einen bestimmten Aspekt des Steuerelements zu bearbeiten. Die Eigenschaften und Ereignisse des Steuerelementmusters bieten Informationen zu einem Bestimmten Aspekt des Steuerelements sowie Informationen zum Zustand des Automatisierungselements, das das Steuerelementmuster implementiert.

Ein benutzerdefiniertes Steuerelementmuster sollte den folgenden Entwurfsrichtlinien entsprechen:

  • Ein benutzerdefiniertes Steuerelementmuster sollte ein bestimmtes Szenario abdecken. Beispielsweise dient das ItemContainer-Steuerelementmuster zum Abfragen eines eigenständigen Objekts unabhängig vom Virtualisierungszustand, zählt aber die enthaltenen Objekte nicht auf oder zählt sie nicht.
  • Ein benutzerdefiniertes Steuerelementmuster sollte sich nicht mit den Features vorhandener Steuerelementmuster überschneiden. Beispielsweise sollten die Invoke - und ExpandCollapse-Steuerelementmuster nicht kombiniert und als neues Steuerelementmuster dargestellt werden. Verwenden Sie entweder vorhandene Steuerelementmuster wieder, oder definieren Sie eindeutige Szenarien mit neuen Steuerelementmustern.
  • Mehrere benutzerdefinierte Steuerelementmuster können zusammen entworfen werden, um komplexe Szenarien zu unterstützen. Beispielsweise arbeiten die Selection - und SelectionItem-Steuerelementmuster zusammen, um allgemeine Objektauswahlszenarien zu unterstützen.

Benutzerdefinierte Steuerelementtypen

Obwohl sich dieses Thema auf das Registrieren benutzerdefinierter Benutzeroberflächenautomatisierung Eigenschaften, Ereignisse und Steuerelementmuster konzentriert, ist es auch möglich, neue Steuerelementtypen einzuführen. Im Gegensatz zu benutzerdefinierten Eigenschaften, Ereignissen und Steuerelementmustern kann ein benutzerdefinierter Steuerelementtyp zur Laufzeit nicht programmgesteuert registriert werden, da er eigentlich nur ein potenzieller Wert der Benutzeroberflächenautomatisierung ControlType-Eigenschaft ist. Eine benutzerdefinierte Steuerelementtyp-ID kann jedoch definiert, veröffentlicht und für andere Clients und Anbieter zur Verfügung gestellt werden. Weitere Informationen zu Steuerelementtypen finden Sie unter Übersicht über Benutzeroberflächenautomatisierung Steuerelementtypen.

Konzept

Registrieren benutzerdefinierter Eigenschaften, Ereignisse und Steuerelementmuster

Übersicht über die Benutzeroberflächenautomatisierungs-Eigenschaften

Übersicht über Benutzeroberflächenautomatisierungs-Ereignisse

Übersicht über Steuerelementmuster für Benutzeroberflächenautomatisierung