Entwerfen von benutzerdefinierten Eigenschaften, Ereignissen und Steuerelementmustern

Der Entwurf einer benutzerdefinierten Eigenschaft, eines Ereignisses oder eines Steuerelementmusters sollte in einer Vielzahl von Steuerelementimplementierungen nützlich sein. Steuerungs- oder anwendungsspezifische Entwürfe, die nur in eingeschränkten 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 Barrierefreiheits- und automatisierten Testanwendungen zu erfüllen.

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

Dieses Thema enthält folgende Abschnitte:

Verwendung von benutzerdefinierten Eigenschaften und Ereignissen

Stellen Sie vor dem Erstellen einer benutzerdefinierten Eigenschaft, eines Ereignisses oder eines 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 eine benutzerdefinierte Eigenschaft, ein Ereignis oder ein Steuerelementmuster erforderlich ist, stellen Sie sicher, dass sie nicht zu ungenau oder generisch ist. Beispielsweise ist ein Steuerelementmuster namens "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 erforderlich ist, und entwerfen Sie dann die Funktionalität vollständig.

Entwerfen benutzerdefinierter Eigenschaften

Benutzeroberflächenautomatisierung enthält zwei grundlegende Eigenschaftentypen: Eigenschaften von Automatisierungselementen und Steuerelementmustereigenschaften. Die Automatisierungselementeigenschaften bestehen aus einem gemeinsamen 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 ColumnCount- und RowCount-Eigenschaften verfügbar.

Eine benutzerdefinierte Automatisierungselementeigenschaft oder Steuerelementmustereigenschaft sollte den folgenden Entwurfsrichtlinien entsprechen:

  • Eine benutzerdefinierte Eigenschaft muss einen der folgenden Datentypen aufweisen, der von der UIAutomationType-Enumeration angegeben wird. Für benutzerdefinierte Eigenschaften werden keine anderen Datentypen unterstützt.
    • UIAutomationType _ Bool
    • UIAutomationType _ Double
    • _UIAutomationType-Element
    • UIAutomationType _ Int
    • _UIAutomationType-Punkt
    • _UIAutomationType-Zeichenfolge
  • Wenn die benutzerdefinierte Eigenschaft Zeichenfolgendaten (BSTR)enthält, muss die Spezifikation festlegen, ob die Eigenschaft lokalisierbar ist (d. h., ob die Zeichenfolge in verschiedene Benutzeroberflächensprachen übersetzt werden kann).
  • Die benutzerdefinierte Eigenschaft darf sich nicht mit den Features oder Funktionen vorhandener Eigenschaften überschneiden.

Entwerfen benutzerdefinierter Ereignisse

Anwendungen verwenden Benutzeroberflächenautomatisierung Ereignisbenachrichtigungen, um auf Änderungen und Aktionen im Zusammenhang mit Benutzeroberflächenelementen zu reagieren. Den meisten Eigenschaften sind Eigenschaftenänderungsereignisse zugeordnet, die Benutzeroberflächenautomatisierung auslöst, wenn sich der Wert der Eigenschaft ändert. Wenn Sie eine benutzerdefinierte Eigenschaft einführen, sollten Sie erwägen, alle entsprechenden benutzerdefinierten Ereignisse einzuführen, die möglicherweise ebenfalls benötigt werden.

Ein benutzerdefiniertes Ereignis sollte den folgenden Entwurfsrichtlinien entsprechen:

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

Benutzerdefinierte Benutzeroberflächenautomatisierung-Ereignisse und WinEvents

WinEvents sind ein nützlicher prozessübergreifender Kommunikations- und Ereignismechanismus auf der Microsoft Windows-Plattform. Die Einführung einer neuen WinEvent-ID ist jedoch riskant, da sie Konflikte mit anderen Anwendungen oder dem Betriebssystem verursachen kann, was dazu führt, 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ächenautomatisierungs-Framework zugewiesen wird.

Entwerfen von benutzerdefinierten Steuerelementmustern

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 stellen Informationen zu einem Aspekt des Steuerelements bereit und stellen Informationen zum Zustand des Automatisierungselements bereit, das das Steuerelementmuster implementiert.

Ein benutzerdefiniertes Steuerelementmuster sollte den folgenden Entwurfsrichtlinien entsprechen:

  • Ein benutzerdefiniertes Steuerelementmuster sollte ein bestimmtes Szenario abdecken. Beispielsweise ist das ItemContainer-Steuerelementmuster für das Abfragen eines enthaltenen Objekts unabhängig vom Virtualisierungszustand vorgesehen, zählt die enthaltenen Objekte jedoch 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 Steuerelementmuster Selection und SelectionItem 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 es sich tatsächlich nur um einen potenziellen Wert der ControlType-Eigenschaft Benutzeroberflächenautomatisierung handelt. Eine benutzerdefinierte Steuerelementtyp-ID kann jedoch definiert, veröffentlicht und für andere Clients und Anbieter zur Verwendung zur Verfügung gestellt werden. Weitere Informationen zu Steuerelementtypen finden Sie unter Benutzeroberflächenautomatisierung Control Types Overview.

Konzept

Registrieren von benutzerdefinierten Eigenschaften, Ereignissen und Steuerelementmustern

Übersicht über die Benutzeroberflächenautomatisierungs-Eigenschaften

Übersicht über Benutzeroberflächenautomatisierungs-Ereignisse

Übersicht über Steuerelementmuster für Benutzeroberflächenautomatisierung