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, mit denen die logische Richtung angegeben wird, in der die Suche nach dem nächsten Symbol erfolgen soll.

Gibt zurück

Ein TextPointer auf das nächste Symbol in der angeforderten Richtung oder null, wenn der aktuelle TextPointer an den Anfang oder das Ende des Inhalts grenzt.

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 TextElementzu durchlaufen und zu extrahieren.

Während das Beispiel verwendet werden kann, um eine XAML-Struktur für den Inhalt eines bestimmten TextElementzu extrahieren, ist es nur zu Veranschaulichungszwecken 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 die Verarbeitung von XML konzipiert sind.

// 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

Eines der folgenden Elemente gilt als Symbol:

  • Ein öffnendes oder schließendes Tag für ein TextElement Element.

  • Ein UIElement Element, das in einem InlineUIContainer oder BlockUIContainerenthalten ist. Beachten Sie, dass ein UIElement solches Symbol immer genau als ein Symbol gezählt wird; alle zusätzlichen Inhalte oder Elemente, die von enthalten UIElement 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 kategorisiert wird (wie von der GetPointerContext -Methode identifiziert), wird das TextPointer von dieser Methode zurückgegebene um genau ein Symbol von der aktuellen Position erweitert.

Wenn das nächste Symbol als Textkategorisiert wird, wird das TextPointer von dieser Methode zurückgegebene über den Text hinaus zum nächsten Nicht-Text-Symbol (d. a. der nächsten Position, an der nicht der TextTextPointerContext ist) erweitert. Die genaue Anzahl der gekreuzten Symbole kann im Voraus durch Aufrufen der GetTextRunLength -Methode berechnet werden.

Gilt für: