TextPointer.GetNextContextPosition(LogicalDirection) Methode

Definition

Gibt einen Zeiger auf das nächste Symbol in der angegebenen logischen Richtung zurück.

public:
 System::Windows::Documents::TextPointer ^ GetNextContextPosition(System::Windows::Documents::LogicalDirection direction);
public System.Windows.Documents.TextPointer GetNextContextPosition(System.Windows.Documents.LogicalDirection direction);
member this.GetNextContextPosition : System.Windows.Documents.LogicalDirection -> System.Windows.Documents.TextPointer
Public Function GetNextContextPosition (direction As LogicalDirection) As TextPointer

Parameter

direction
LogicalDirection

Einer der LogicalDirection Werte, der die logische Richtung angibt, in der nach dem nächsten Symbol gesucht werden soll.

Gibt zurück

A TextPointer bis zum nächsten Symbol in der angeforderten Richtung oder null wenn der aktuelle TextPointer Inhalt den Anfang oder das Ende des Inhalts umrandt.

Beispiele

Im folgenden Beispiel wird eine Verwendung für diese Methode veranschaulicht. Im Beispiel wird die GetNextContextPosition Methode in Verbindung mit der GetPointerContext Methode verwendet, um die Symbole in einem angegebenen Objekt TextElementzu durchlaufen und zu extrahieren.

Das Beispiel kann zwar verwendet werden, um eine XAML-Struktur für den Inhalt eines bestimmten TextElementElements zu extrahieren, ist jedoch nur für veranschauliche Zwecke vorgesehen und sollte nicht im Produktionscode verwendet werden. Sehen Sie sich den System.Xml Namespace für einen umfangreichen Satz von Typen an, die für das Arbeiten mit und verarbeiten von XML entwickelt wurden.

// This method will extract and return a string that contains a representation of 
// the XAML structure of content elements in a given TextElement.        
string GetXaml(TextElement element)
{
    StringBuilder buffer = new StringBuilder();
 
    // Position a "navigator" pointer before the opening tag of the element.
    TextPointer navigator = element.ElementStart;

    while (navigator.CompareTo(element.ElementEnd) < 0)
    {
        switch (navigator.GetPointerContext(LogicalDirection.Forward))
        {
            case TextPointerContext.ElementStart : 
                // Output opening tag of a TextElement
                buffer.AppendFormat("<{0}>", navigator.GetAdjacentElement(LogicalDirection.Forward).GetType().Name);
                break;
            case TextPointerContext.ElementEnd :
                // Output closing tag of a TextElement
                buffer.AppendFormat("</{0}>", navigator.GetAdjacentElement(LogicalDirection.Forward).GetType().Name);
                break;
            case TextPointerContext.EmbeddedElement :
                // Output simple tag for embedded element
                buffer.AppendFormat("<{0}/>", navigator.GetAdjacentElement(LogicalDirection.Forward).GetType().Name);
                break;
            case TextPointerContext.Text :
                // Output the text content of this text run
                buffer.Append(navigator.GetTextInRun(LogicalDirection.Forward));
                break;
        }
 
        // Advance the naviagtor to the next context position.
        navigator = navigator.GetNextContextPosition(LogicalDirection.Forward);
    } // End while.

    return buffer.ToString();
} // End GetXaml method.
' This method will extract and return a string that contains a representation of 
' the XAML structure of content elements in a given TextElement.        
Private Function GetXaml_Renamed(ByVal element As TextElement) As String
    Dim buffer As New StringBuilder()

    ' Position a "navigator" pointer before the opening tag of the element.
    Dim navigator As TextPointer = element.ElementStart

    Do While navigator.CompareTo(element.ElementEnd) < 0
        Select Case navigator.GetPointerContext(LogicalDirection.Forward)
            Case TextPointerContext.ElementStart
                ' Output opening tag of a TextElement
                buffer.AppendFormat("<{0}>", navigator.GetAdjacentElement(LogicalDirection.Forward).GetType().Name)
            Case TextPointerContext.ElementEnd
                ' Output closing tag of a TextElement
                buffer.AppendFormat("</{0}>", navigator.GetAdjacentElement(LogicalDirection.Forward).GetType().Name)
            Case TextPointerContext.EmbeddedElement
                ' Output simple tag for embedded element
                buffer.AppendFormat("<{0}/>", navigator.GetAdjacentElement(LogicalDirection.Forward).GetType().Name)
            Case TextPointerContext.Text
                ' Output the text content of this text run
                buffer.Append(navigator.GetTextInRun(LogicalDirection.Forward))
        End Select

        ' Advance the naviagtor to the next context position.
        navigator = navigator.GetNextContextPosition(LogicalDirection.Forward)

    Loop ' End while.

    Return buffer.ToString()

End Function ' End GetXaml method.

Hinweise

Eine der folgenden Elemente wird als Symbol betrachtet:

  • Ein öffnender oder schließender Tag für ein TextElement Element.

  • Ein UIElement Element, das in einem InlineUIContainer oder BlockUIContainer. Beachten Sie, dass ein UIElement solches Symbol immer als genau ein Symbol gezählt wird. Alle zusätzlichen Inhalte oder Elemente, die in den UIElement Elementen enthalten sind, werden nicht als Symbole gezählt.

  • Ein 16-Bit-Unicode-Zeichen innerhalb eines Textelements Run .

Wenn das nächste Symbol als EmbeddedElement, ElementStartoder ElementEnd (wie durch die GetPointerContext Methode identifiziert) kategorisiert wird, wird das TextPointer von dieser Methode zurückgegebene Symbol um genau ein Symbol von der aktuellen Position erweitert.

Wenn das nächste Symbol als Textkategorisiert wird, wird der TextPointer von dieser Methode zurückgegebene Text über das nächste Nicht-Text-Symbol hinaus erweitert (d. a. die nächste Position, an der dies TextPointerContext nicht Textder Fall ist). Die durch Aufrufen der GetTextRunLength Methode gekreuzte genaue Symbolanzahl kann im Voraus berechnet werden.

Gilt für: