Übersicht über TextPattern und eingebettete Objekte

Hinweis

Diese Dokumentation ist für .NET Framework-Entwickler konzipiert, die die verwalteten Klassen zur Automatisierung der Benutzeroberfläche verwenden möchten, die im Namespace System.Windows.Automation definiert sind. Aktuelle Informationen zur Automatisierung der Benutzeroberfläche finden Sie auf der Seite zur Windows-Automatisierungs-API: Benutzeroberflächenautomatisierung.

In dieser Übersicht wird beschrieben, wie von der Microsoft-Benutzeroberflächenautomatisierung eingebettete Objekte oder untergeordnete Elemente innerhalb eines Textdokuments oder Containers verfügbar gemacht werden.

In der Benutzeroberflächenautomatisierung ist eingebettetes Objekt ein Element mit nicht textbezogenen Grenzen, z. B. Bild, Link, Tabelle oder ein Dokumenttyp wie ein Microsoft Excel-Arbeitsblatt oder eine Microsoft Windows-Mediendatei. Dies weicht von der Standarddefinition ab, in der Elemente in einer Anwendung erstellt und einer anderen eingebettet bzw. mit einer anderen verknüpft sind. Ob das Objekt innerhalb der ursprünglichen Anwendung bearbeitet werden kann, ist im Kontext der Benutzeroberflächenautomatisierung nicht relevant.

Eingebettete Objekte und die Benutzeroberflächenautomatisierungs-Struktur

Eingebettete Objekte werden als einzelne Elemente innerhalb der Steuerelementansicht der Struktur für die Benutzeroberflächenautomatisierung behandelt. Sie werden als untergeordnete Elemente des Textcontainers verfügbar gemacht, sodass über dasselbe Model wie bei anderen Steuerelementen in der Benutzeroberflächenautomatisierung auf diese zugegriffen werden kann.

Eingebettete Tabelle mit Bild in einem Textcontainer Beispiel eines Textcontainers mit eingebetteten Objekten (Tabelle, Bild und Link)

Inhaltsansicht des vorherigen Beispiels Beispiel der Inhaltsansicht eines Teils des vorigen Textcontainers

Verfügbarmachen von eingebetteten Objekten mithilfe von TextPattern und TextPatternRange

Die TextPattern -Steuerelementmuster-Klasse wird in Verbindung mit der TextPatternRange -Klasse verwendet, um Methoden und Eigenschaften verfügbar zu machen, die das Navigieren und Abfragen von eingebetteten Objekten erleichtern.

Der Textinhalt (oder innere Text) eines Textcontainers und ein eingebettetes Objekt, z. B. ein Link oder eine Tabellenzelle, werden in der Steuerelementansicht und der Inhaltsansicht der Struktur für die Benutzeroberflächenautomatisierung als einzelner, kontinuierlicher Textstream verfügbar gemacht. Objektgrenzen werden dabei ignoriert. Wenn ein Benutzeroberflächenautomatisierungs-Client den Text abruft, um ihn zu lesen, zu interpretieren oder zu analysieren, sollte der Textbereich auf bestimmte Fälle überprüft werden, z. B. auf Tabellen mit Textinhalt oder andere eingebettete Objekte. Dies geschieht durch Aufrufen von GetChildren , um ein AutomationElement für alle eingebetteten Elemente abzurufen, und anschließend durch Aufrufen von RangeFromChild , um einen Textbereich für alle Elemente abzurufen. Dies wird rekursiv ausgeführt, bis der gesamte Textinhalt abgerufen wurde.

Textbereiche, die von eingebetteten Objekten umschlossen sind. Beispiel eines Textstreams mit eingebetteten Objekten und deren Bereichsspannen

Wenn der Inhalt eines Textbereichs durchlaufen werden muss, ist eine Reihe von Hintergrundschritten erforderlich, um die Move -Methode erfolgreich auszuführen.

  1. Der Textbereich ist normalisiert. Dies bedeutet, dass dieser auf einen degenerierten Bereich am Start -Endpunkt reduziert ist, wodurch der End -Endpunkt überflüssig wird. Dieser Schritt ist erforderlich, um Mehrdeutigkeit in Situationen zu beseitigen, in denen ein Textbereich die TextUnit -Grenzen überschreitet, z. B. {The URL https://www.microsoft.com is embedded in text, wobei „{“ und „}“ die Endpunkte des Textbereichs darstellen.

  2. Der resultierende Bereich wird im DocumentRange zurück an den Anfang der angeforderten TextUnit -Grenze verschoben.

  3. Der Bereich wird um die angeforderte Anzahl von DocumentRange -Grenzen nach vorne oder nach hinten im TextUnit verschoben.

  4. Anschließend wird der Bereich von einem degenerierten Bereichszustand erweitert, indem der End -Endpunkt um eine angeforderte TextUnit -Grenze verschoben wird.

Bereichsanpassungen durch Move und ExpandToEnclosingUnit Beispiele für die Anpassung eines Textbereichs für Move() und ExpandToEnclosingUnit()

Häufige Szenarios

In den folgenden Abschnitten sind Beispiele für die häufigsten Szenarien dargestellt, in denen eingebettete Objekte verwendet werden.

Legende für die dargestellten Beispiele:

{ = Start

} = End

Beispiel 1: Ein Textbereich, der einen eingebetteten Textlink enthält

{The URL https://www.microsoft.com is embedded in text}.

Aufgerufene Methode Ergebnis
GetText Gibt die Zeichenfolge The URL https://www.microsoft.com is embedded in text zurück.
GetEnclosingElement Gibt das den Textbereich einschließende, innerste AutomationElement zurück, in diesem Fall das AutomationElement , das den Textanbieter darstellt.
GetChildren Gibt ein AutomationElement zurück, das das Linksteuerelement darstellt.
RangeFromChild , wobei AutomationElement das von der vorherigen GetChildren -Methode zurückgegebene Objekt ist. Gibt den Bereich zurück, der https://www.microsoft.com darstellt.

Beispiel 2: Ein Textbereich, der einen eingebetteten Textlink nur teilweise enthält

Die URL https://{[www]} ist in Text eingebettet.

Aufgerufene Methode Ergebnis
GetText Gibt die Zeichenfolge „www“ zurück.
GetEnclosingElement Gibt das den Textbereich einschließende, innerste AutomationElement zurück, in diesem Fall das Linksteuerelement.
GetChildren Gibt null zurück, da der Textbereich nicht die gesamte URL-Zeichenfolge umfasst.

Beispiel 3: Ein Textbereich, der den Inhalt eines Textcontainers nur teilweise enthält. Der Textcontainer enthält einen eingebetteten Textlink, der nicht im Textbereich enthalten ist.

{The URL} [https://www.microsoft.com](https://www.microsoft.com) is embedded in text.

Aufgerufene Methode Ergebnis
GetText Gibt die Zeichenfolge „Die URL“ zurück.
GetEnclosingElement Gibt das den Textbereich einschließende, innerste AutomationElement zurück, in diesem Fall das AutomationElement , das den Textanbieter darstellt.
Move mit den Parametern (TextUnit.Word, 1). Verschiebt den Textbereichsabschnitt nach „http“, da der Text des Links aus einzelnen Wörtern besteht. In diesem Fall wird der Link nicht als einzelnes Objekt behandelt.

Die URL {{http}} ist in Text eingebettet.

Image

Beispiel 1: Ein Textbereich, der ein eingebettetes Bild enthält

{Das Bild Beispiel eines eingebetteten Bilds ist in Text eingebettet}.

Aufgerufene Methode Ergebnis
GetText Gibt die Zeichenfolge „Das Bild ist in den Text eingebettet“ zurück. Ein dem Bild zugeordneter Alternativtext (ALT) kann nicht im Textstream miteingeschlossen werden.
GetEnclosingElement Gibt das den Textbereich einschließende, innerste AutomationElement zurück, in diesem Fall das AutomationElement , das den Textanbieter darstellt.
GetChildren Gibt ein AutomationElement zurück, das das Bildsteuerelement darstellt.
RangeFromChild , wobei AutomationElement das von der vorherigen GetChildren -Methode zurückgegebene Objekt ist. Gibt den degenerierten Bereich zurück, der Beispiel eines eingebetteten Bilds darstellt.

Beispiel 2: Ein Textbereich, der den Inhalt eines Textcontainers nur teilweise enthält. Der Textcontainer enthält ein eingebettetes Bild, das nicht im Textbereich enthalten ist.

{Das Bild} Beispiel eines eingebetteten Bilds ist in Text eingebettet.

Aufgerufene Methode Ergebnis
GetText Gibt die Zeichenfolge „Das Bild“ zurück.
GetEnclosingElement Gibt das den Textbereich einschließende, innerste AutomationElement zurück, in diesem Fall das AutomationElement , das den Textanbieter darstellt.
Move mit den Parametern (TextUnit.Word, 1). Verschiebt den Textbereichsabschnitt nach „ist“. Da nur textbasierte eingebettete Objekte als Teil des Textstreams betrachtet werden, hat das Bild in diesem Beispiel keine Auswirkungen auf das Move-Objekt oder dessen Rückgabewert (in diesem Fall 1).

Tabelle

Für Beispiele verwendete Tabelle

Zelle mit Bild Zelle mit Text
Beispiel eines eingebetteten Bilds X
Beispiel eines eingebetteten Bilds 2 J
Beispiel eines eingebetteten Bilds 3

Bild für Z
Z

Beispiel 1: Abrufen des Textcontainers aus dem Inhalt einer Zelle

Aufgerufene Methode Ergebnis
GetItem mit den Parametern (0,0) Gibt das AutomationElement zurück, das den Inhalt der Tabellenzelle darstellt; in diesem Fall ist das Element ein Textsteuerelement.
RangeFromChild , wobei AutomationElement das von der vorherigen GetItem -Methode zurückgegebene Objekt ist. Gibt den Bereich zurück, der Beispiel eines eingebetteten Bilds darstellt.
GetEnclosingElement für das von der vorherigen RangeFromChild -Methode zurückgegebene Objekt. Gibt das AutomationElement zurück, das die Tabellenzelle darstellt; in diesem Fall ist das Element ein Textsteuerelement, das TableItemPattern unterstützt.
GetEnclosingElement für das von der vorherigen GetEnclosingElement -Methode zurückgegebene Objekt. Gibt das AutomationElement zurück, das die Tabelle darstellt.
GetEnclosingElement für das von der vorherigen GetEnclosingElement -Methode zurückgegebene Objekt. Gibt das AutomationElement zurück, das den Textanbieter darstellt.

Beispiel 2: Abrufen des Textinhalts einer Zelle

Aufgerufene Methode Ergebnis
GetItem mit den Parametern {1,1}. Gibt das AutomationElement zurück, das den Inhalt der Tabellenzelle darstellt; in diesem Fall ist das Element ein Textsteuerelement.
RangeFromChild , wobei AutomationElement das von der vorherigen GetItem -Methode zurückgegebene Objekt ist. Gibt „Y“ zurück.

Siehe auch