Freigeben über


Arbeiten mit virtualisierten Elementen

In diesem Thema wird beschrieben, wie Sie die von den Steuerelementmustern ItemContainer und VirtualizedItem bereitgestellten Funktionen verwenden, um Informationen zu virtualisierten Elementen zu finden und abzurufen.

Übersicht über die Virtualisierung

Steuerelemente, die eine große Anzahl untergeordneter Elemente enthalten, können die Virtualisierung verwenden, um die Elemente effizient zu verwalten. Bei der Virtualisierung behält das Steuerelement zu einem bestimmten Zeitpunkt nur für eine Teilmenge von Elementen vollständige Informationen im Arbeitsspeicher bei. In der Regel enthält die Teilmenge nur die Elemente, die derzeit für den Benutzer sichtbar sind. Vollständige Informationen zu den verbleibenden virtualisierten Elementen werden im Speicher aufbewahrt und in den Arbeitsspeicher geladen oder realisiert, da das Steuerelement sie benötigt, z. B. wenn neue Elemente für den Benutzer sichtbar werden.

Steuerelemente, die Virtualisierung verwenden, stellen eine Herausforderung dar, da nur realisierte Elemente vollständig als Microsoft Benutzeroberflächenautomatisierung-Elemente in der Benutzeroberflächenautomatisierung-Struktur verfügbar sind. Virtualisierte Elemente sind in der Struktur nicht vorhanden, sodass Informationen dazu für Clients nicht verfügbar sind. Um Informationen zu virtualisierten Elementen abzurufen, benötigen Clients eine Möglichkeit, Benutzeroberflächenautomatisierung zu erzwingen, die Anforderung zu übergeben, um die Elemente an das Steuerelement zu realisieren. Nachdem die Elemente realisiert wurden, können Benutzeroberflächenautomatisierung Benutzeroberflächenautomatisierung Elemente für sie erstellen. Benutzeroberflächenautomatisierung enthält zwei Steuerelementmuster, um Clients die Arbeit mit virtualisierten Elementen zu ermöglichen: ItemContainer und VirtualizedItem.

Unterstützung der Virtualisierung durch ein Steuerelement

Jedes Steuerelement, das virtualisierte Elemente enthalten kann, muss das ItemContainer-Steuerelementmuster unterstützen. Darüber hinaus muss jedes Element, das virtualisiert werden kann, das VirtualizedItem-Steuerelementmuster unterstützen. Auf die Funktionalität, die durch die ItemContainer- und VirtualizedItem-Steuerelementmuster verfügbar gemacht wird, können Clients über die Schnittstellen IUIAutomationItemContainerPattern und IUIAutomationVirtualizedItemPattern zugreifen.

Wie Clients virtualisierte Elemente finden und realisieren

Clients können die IUIAutomationItemContainerPattern::FindItemByProperty-Methode verwenden, um basierend auf dem Wert einer bestimmten Eigenschaft nach untergeordneten Elementen im Container zu suchen. Die -Methode kann auch das erste Element im Container oder das Element abrufen, das dem angegebenen Element folgt. Wenn ein übereinstimmende untergeordnetes Element gefunden wird, ruft findItemByProperty eine IUIAutomationElement-Schnittstelle für das Element ab. Wenn das untergeordnete Element jedoch virtualisiert ist, ist die IUIAutomationElement-Schnittstelle ein Platzhalter. Der UIA_E_ELEMENTNOTAVAILABLE Fehler tritt auf, wenn der Client versucht, die IUIAutomationElement-Schnittstelle zum Abrufen von Eigenschaftswerten oder aufrufen von Methoden, die noch nicht verfügbar sind, zu verwenden. Welche Eigenschaften oder Methoden über einen Platzhalter verfügbar sind, hängt von der Steuerungsimplementierung ab. Die einzige Voraussetzung für einen Platzhalter ist die Unterstützung der IUIAutomationVirtualizedItemPattern-Schnittstelle .

Der UIA_E_ELEMENTNOTAVAILABLE-Fehler ist ein Hinweis für den Client, dass ein Element möglicherweise virtualisiert wird. Der Client sollte reagieren, indem er die IUIAutomationVirtualizedItemPattern-Schnittstelle für das Element abruft und das Element dann durch Aufrufen der IUIAutomationVirtualizedItemPattern::Realize-Methode realisiert. Wenn dies erfolgreich ist, ist die IUIAutomationElement-Schnittstelle mit allen geeigneten Eigenschaften voll funktionsfähig.

Je nach Steuerelementimplementierung kann das Aufrufen von IUIAutomationVirtualizedItemPattern::Realize dazu führen, dass das Steuerelement das Element in die Ansicht scrollt. Ein Client sollte sich jedoch nicht darauf verlassen, dass das Element in die Ansicht scrollt oder sichtbar gemacht wird. Um sicherzustellen, dass das Element sichtbar ist, kann der Client die IUIAutomationScrollItemPattern::ScrollIntoView-Methode verwenden.

Beispiel

Beispielcode, der zeigt, wie Sie die Benutzeroberflächenautomatisierung Unterstützung für Virtualisierung verwenden, finden Sie unter Abrufen eines virtualisierten Elements.

Übersicht über Steuerelementmuster für Benutzeroberflächenautomatisierung