Compartir vía


TextPointer.GetNextContextPosition(LogicalDirection) Método

Definición

Devuelve un puntero al símbolo siguiente en la dirección lógica especificada.

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

Parámetros

direction
LogicalDirection

Uno de los valores de LogicalDirection que especifica la dirección lógica en la que buscar el símbolo siguiente.

Devoluciones

TextPointer

TextPointer al símbolo siguiente en la dirección solicitada o null si el TextPointer actual limita el inicio o el fin del contenido.

Ejemplos

En el ejemplo siguiente se muestra un uso para este método. En el ejemplo se usa el GetNextContextPosition método junto con el GetPointerContext método para recorrer y extraer los símbolos de un especificado TextElement.

Aunque el ejemplo se puede usar para extraer una estructura XAML para el contenido de un determinado TextElement, está pensada solo para fines ilustrativos y no debe usarse en el código de producción. Consulte el System.Xml espacio de nombres para obtener un amplio conjunto de tipos diseñados para trabajar con y procesar XML.

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

Comentarios

Cualquiera de los siguientes se considera un símbolo:

  • Una etiqueta de apertura o cierre para un TextElement elemento.

  • Elemento UIElement contenido en o InlineUIContainer BlockUIContainer. Tenga en cuenta que este tipo UIElement siempre se cuenta como exactamente un símbolo; cualquier contenido o elementos adicionales contenidos por no UIElement se cuentan como símbolos.

  • Carácter Unicode de 16 bits dentro de un elemento de texto Run .

Si el siguiente símbolo se clasifica como EmbeddedElement, ElementStarto ElementEnd (identificado por el GetPointerContext método ), el TextPointer valor devuelto por este método está avanzado exactamente por un símbolo de la posición actual.

Si el siguiente símbolo se clasifica como Text, el TextPointer devuelto por este método pasa el texto al siguiente símbolo que no es de texto (es decir, la siguiente posición donde no TextPointerContext Textes ). El recuento exacto de símbolos cruzados se puede calcular de antemano llamando al GetTextRunLength método .

Se aplica a