TextPointer Clase

Definición

Representa una posición dentro de un FlowDocument o TextBlock.Represents a position within a FlowDocument or TextBlock.

public ref class TextPointer : System::Windows::Documents::ContentPosition
public class TextPointer : System.Windows.Documents.ContentPosition
type TextPointer = class
    inherit ContentPosition
Public Class TextPointer
Inherits ContentPosition
Herencia
TextPointer

Ejemplos

En el ejemplo siguiente se muestra cómo utilizar TextPointer un para buscar una posición justo dentro del primer Run elemento de un contenedor de texto especificado.The following example demonstrates how to use a TextPointer to find a position just inside of the first Run element in a specified text container.

// This method returns the position just inside of the first text Run (if any) in a 
// specified text container.
TextPointer FindFirstRunInTextContainer(DependencyObject container)
{
    TextPointer position = null;

    if (container != null){
        if (container is FlowDocument)
            position = ((FlowDocument)container).ContentStart;
        else if (container is TextBlock)
            position = ((TextBlock)container).ContentStart;
        else
            return position;
    }
    // Traverse content in forward direction until the position is immediately after the opening 
    // tag of a Run element, or the end of content is encountered.
    while (position != null)
    {
        // Is the current position just after an opening element tag?
        if (position.GetPointerContext(LogicalDirection.Backward) == TextPointerContext.ElementStart)
        {
            // If so, is the tag a Run?
            if (position.Parent is Run)
                break;
        }

        // Not what we're looking for; on to the next position.
        position = position.GetNextContextPosition(LogicalDirection.Forward);
    }
        
    // This will be either null if no Run is found, or a position just inside of the first Run element in the
    // specifed text container.  Because position is formed from ContentStart, it will have a logical direction
    // of Backward.
    return position;
} 
' This method returns the position just inside of the first text Run (if any) in a 
' specified text container.
Private Function FindFirstRunInTextContainer(ByVal container As DependencyObject) As TextPointer
    Dim position As TextPointer = Nothing

    If container IsNot Nothing Then
        If TypeOf container Is FlowDocument Then
            position = (CType(container, FlowDocument)).ContentStart
        ElseIf TypeOf container Is TextBlock Then
            position = (CType(container, TextBlock)).ContentStart
        Else
            Return position
        End If
    End If
    ' Traverse content in forward direction until the position is immediately after the opening 
    ' tag of a Run element, or the end of content is encountered.
    Do While position IsNot Nothing
        ' Is the current position just after an opening element tag?
        If position.GetPointerContext(LogicalDirection.Backward) = TextPointerContext.ElementStart Then
            ' If so, is the tag a Run?
            If TypeOf position.Parent Is Run Then
                Exit Do
            End If
        End If

        ' Not what we're looking for on to the next position.
        position = position.GetNextContextPosition(LogicalDirection.Forward)
    Loop

    ' This will be either null if no Run is found, or a position just inside of the first Run element in the
    ' specifed text container.  Because position is formed from ContentStart, it will have a logical direction
    ' of Backward.
    Return position
End Function

En el ejemplo siguiente se implementa un algoritmo de búsqueda TextPointer simplista mediante instalaciones.The following example implements a simplistic find algorithm using TextPointer facilities.

// This method will search for a specified word (string) starting at a specified position.
TextPointer FindWordFromPosition(TextPointer position, string word)
{
    while (position != null)
    {
         if (position.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.Text)
         {
             string textRun = position.GetTextInRun(LogicalDirection.Forward);

             // Find the starting index of any substring that matches "word".
             int indexInRun = textRun.IndexOf(word);
             if (indexInRun >= 0)
             {
                 position = position.GetPositionAtOffset(indexInRun);
                 break;
             }
         }
         else
            position = position.GetNextContextPosition(LogicalDirection.Forward);
     }

     // position will be null if "word" is not found.
     return position; 
}
' This method will search for a specified word (string) starting at a specified position.
Private Function FindWordFromPosition(ByVal position As TextPointer, ByVal word As String) As TextPointer
    Do While position IsNot Nothing
        If position.GetPointerContext(LogicalDirection.Forward) = TextPointerContext.Text Then
            Dim textRun As String = position.GetTextInRun(LogicalDirection.Forward)

            ' Find the starting index of any substring that matches "word".
            Dim indexInRun As Integer = textRun.IndexOf(word)
            If indexInRun >= 0 Then
                position = position.GetPositionAtOffset(indexInRun)
                Exit Do
            End If
        Else
            position = position.GetNextContextPosition(LogicalDirection.Forward)
        End If
    Loop

    ' position will be null if "word" is not found.
    Return position
End Function

Comentarios

La TextPointer clase presenta la siguiente terminología:The TextPointer class introduces the following terminology:

  • Posición: de forma TextPointer inherente, siempre apunta a una posición en el contenido.Position - Inherently, a TextPointer always points to a position in content. Estas posiciones se encuentran entre los caracteres del contenido o entre las etiquetas del elemento de contenido dinámico que definen la estructura para el contenido.Such positions either fall between characters in the content, or between flow content element tags that define structure for the content.

  • Posición actual: dado TextPointer que siempre indica una posición, y dado que muchas de las operaciones que se pueden realizar TextPointer a través de son relativas a la posición a la que TextPointerapunta actualmente, tiene sentido simplemente hacer referencia a la posición indicada por TextPointer como la posición actual.Current Position - Because a TextPointer always indicates a position, and because many of the operations that can be performed through a TextPointer are relative to the position currently pointed to by the TextPointer, it makes sense to simply refer to the position indicated by a TextPointer as the current position.

  • Posición de inserción: una posición de inserción es una posición en la que se puede agregar contenido nuevo sin romper ninguna regla semántica para el contenido asociado.Insertion Position - An insertion position is a position where new content may be added without breaking any semantic rules for the associated content. En la práctica, una posición de inserción es en cualquier parte del contenido donde se puede colocar un símbolo de intercalación.In practice, an insertion position is anywhere in content where a caret may be positioned. Un ejemplo de una posición TextPointer válida que no es una posición de inserción es la posición entre dos Paragraph etiquetas adyacentes (es decir, entre la etiqueta de cierre del párrafo anterior y la etiqueta de apertura del párrafo siguiente).An example of a valid TextPointer position that is not an insertion position is the position between two adjacent Paragraph tags (that is, between the closing tag of the preceding paragraph and the opening tag of the next paragraph).

  • Symbol: para los fines de TextPointer las operaciones que implican símbolos, se considera que cualquiera de los siguientes elementos es un símbolo:Symbol - For the purposes of TextPointer operations that involve symbols, any of the following is considered to be a symbol:

    • Etiqueta de apertura o de cierre para TextElement un elemento.An opening or closing tag for a TextElement element.

    • Un UIElement elemento contenido dentro de InlineUIContainer un BlockUIContainero.A UIElement element contained within an InlineUIContainer or BlockUIContainer. Tenga en cuenta que UIElement este tipo siempre se cuenta como exactamente un símbolo; el UIElement contenido o los elementos adicionales incluidos en no se cuentan como símbolos.Note that such a UIElement is always counted as exactly one symbol; any additional content or elements contained by the UIElement are not counted as symbols.

    • Cada carácter de 16 UnicodeUnicode bits dentro de un elemento Run de texto.Each 16-bit UnicodeUnicode character inside of a text Run element.

  • Contenedor de texto: un contenedor de texto es el elemento que constituye el borde más avanzado del contenido dinámico en cuestión. la posición indicada por TextPointer siempre está dentro de un contenedor de texto.Text Container - A text container is the element that forms the ultimate border for the flow content at hand; the position indicated by a TextPointer always falls within a text container. Actualmente, un contenedor de texto debe ser FlowDocument TextBlocko.Currently, a text container must be either a FlowDocument or a TextBlock. En términos generales, no TextPointer se admiten las operaciones entre instancias de contenedores de texto diferentes.Generally speaking, operations between TextPointer instances in different text containers are not supported.

  • Documento: el contenido de un contenedor de texto se conoce como documento, como en el IsInSameDocument método y las DocumentStart propiedades y DocumentEnd .Document - The content in a text container is referred to as a document, as in the IsInSameDocument method and the DocumentStart and DocumentEnd properties.

La TextPointer clase está pensada para facilitar el recorrido y la manipulación de contenido representado por Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) elementos de contenido dinámico; en general, estos elementos se TextElementderivan de.The TextPointer class is intended to facilitate traversal and manipulation of content that is represented by Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) flow content elements; in general, such elements derive from TextElement. Algunas de las operaciones que TextPointer facilita incluyen lo siguiente:Some of the operations that TextPointer facilitates include the following:

La posición y LogicalDirection indicada por un TextPointer objeto son inmutables.The position and LogicalDirection indicated by a TextPointer object are immutable. Cuando se edita o modifica el contenido, la posición indicada por TextPointer un no cambia en relación con el texto circundante; en su lugar, el desplazamiento de esa posición desde el principio del contenido se ajusta para reflejar la nueva posición relativa en Content.When content is edited or modified, the position indicated by a TextPointer does not change relative to the surrounding text; rather the offset of that position from the beginning of content is adjusted correspondingly to reflect the new relative position in content. Por ejemplo, un TextPointer que indica que una posición al principio de un párrafo determinado sigue señalando al principio de ese párrafo, incluso cuando el contenido se inserta o se elimina antes o después del párrafo.For example, a TextPointer that indicates a position at the beginning of a given paragraph continues to point to the beginning of that paragraph even when content is inserted or deleted before or after the paragraph.

La TextPointer clase no proporciona ningún constructor público.The TextPointer class does not provide any public constructors. Una instancia de TextPointer se crea mediante las propiedades o los métodos de otros objetos (incluidos TextPointer otros objetos).An instance of TextPointer is created by using properties or methods of other objects (including other TextPointer objects). En la lista siguiente se proporcionan algunos ejemplos de métodos y propiedades que crean y devuelven TextPointer.The following list provides a few examples of methods and properties that create and return a TextPointer. Esta lista no es exhaustiva:This list is not exhaustive:

Propiedades

DocumentEnd

Obtiene TextPointer al final del contenido en el contenedor de texto asociado a la posición actual.Gets a TextPointer at the end of content in the text container associated with the current position.

DocumentStart

Obtiene TextPointer al principio del contenido en el contenedor de texto asociado a la posición actual.Gets a TextPointer at the beginning of content in the text container associated with the current position.

HasValidLayout

Obtiene un valor que indica si el contenedor de texto asociado a la posición actual tiene un diseño válido (actualizado).Gets a value that indicates whether the text container associated with the current position has a valid (up-to-date) layout.

IsAtInsertionPosition

Obtiene un valor que indica si la posición actual es una posición de inserción.Gets a value that indicates whether the current position is an insertion position.

IsAtLineStartPosition

Obtiene un valor que indica si la posición actual está al principio de una línea.Gets a value that indicates whether the current position is at the beginning of a line.

LogicalDirection

Obtiene la dirección lógica asociada a la posición actual que se utiliza para eliminar la ambigüedad del contenido asociado a la posición actual.Gets the logical direction associated with the current position which is used to disambiguate content associated with the current position.

Paragraph

Obtiene el párrafo que establece el ámbito de la posición actual, si lo hay.Gets the paragraph that scopes the current position, if any.

Parent

Obtiene el elemento primario lógico que establece el ámbito de la posición actual.Gets the logical parent that scopes the current position.

Métodos

CompareTo(TextPointer)

Realiza una comparación de ordinales entre las posiciones especificadas por el TextPointer actual y un segundo TextPointer especificado.Performs an ordinal comparison between the positions specified by the current TextPointer and a second specified TextPointer.

DeleteTextInRun(Int32)

Elimina el número de caracteres especificado de la posición indicada por el TextPointer actual.Deletes the specified number of characters from the position indicated by the current TextPointer.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Heredado de Object)
GetAdjacentElement(LogicalDirection)

Devuelve el elemento, en caso de que exista, que limita al TextPointer actual en la dirección lógica especificada.Returns the element, if any, that borders the current TextPointer in the specified logical direction.

GetCharacterRect(LogicalDirection)

Devuelve un rectángulo de selección (Rect) para el contenido que limita el TextPointer actual en la dirección lógica especificada.Returns a bounding box (Rect) for content that borders the current TextPointer in the specified logical direction.

GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Heredado de Object)
GetInsertionPosition(LogicalDirection)

Devuelve TextPointer a la posición de inserción más cercana en la dirección lógica especificada.Returns a TextPointer to the closest insertion position in the specified logical direction.

GetLineStartPosition(Int32)

Devuelve TextPointer al principio de una línea que se especifica con respecto al TextPointer actual.Returns a TextPointer to the beginning of a line that is specified relative to the current TextPointer.

GetLineStartPosition(Int32, Int32)

Devuelve TextPointer al principio de una línea que se especifica con respecto al TextPointer actual e informa sobre el número de líneas omitidas.Returns a TextPointer to the beginning of a line that is specified relative to the current TextPointer, and reports how many lines were skipped.

GetNextContextPosition(LogicalDirection)

Devuelve un puntero al símbolo siguiente en la dirección lógica especificada.Returns a pointer to the next symbol in the specified logical direction.

GetNextInsertionPosition(LogicalDirection)

Devuelve TextPointer a la posición de inserción siguiente en la dirección lógica especificada.Returns a TextPointer to the next insertion position in the specified logical direction.

GetOffsetToPosition(TextPointer)

Devuelve el recuento de símbolos entre el TextPointer actual y un segundo TextPointer especificado.Returns the count of symbols between the current TextPointer and a second specified TextPointer.

GetPointerContext(LogicalDirection)

Devuelve un indicador de categoría para el contenido adyacente al TextPointer actual en la dirección lógica especificada.Returns a category indicator for the content adjacent to the current TextPointer in the specified logical direction.

GetPositionAtOffset(Int32)

Devuelve TextPointer a la posición indicada por el desplazamiento especificado, en símbolos, a partir del principio del TextPointer actual.Returns a TextPointer to the position indicated by the specified offset, in symbols, from the beginning of the current TextPointer.

GetPositionAtOffset(Int32, LogicalDirection)

Devuelve TextPointer a la posición indicada por el desplazamiento especificado, en símbolos, a partir del principio del TextPointer actual y en la dirección especificada.Returns a TextPointer to the position indicated by the specified offset, in symbols, from the beginning of the current TextPointer and in the specified direction.

GetTextInRun(LogicalDirection)

Devuelve una cadena que contiene cualquier texto adyacente al TextPointer actual en la dirección lógica especificada.Returns a string containing any text adjacent to the current TextPointer in the specified logical direction.

GetTextInRun(LogicalDirection, Char[], Int32, Int32)

Copia el número de caracteres máximo especificado desde cualquier texto adyacente en la dirección especificada en una matriz de caracteres proporcionada por un llamador.Copies the specified maximum number of characters from any adjacent text in the specified direction into a caller-supplied character array.

GetTextRunLength(LogicalDirection)

Devuelve el número de caracteres Unicode entre el TextPointer actual y el símbolo de no texto siguiente, en la dirección lógica especificada.Returns the number of Unicode characters between the current TextPointer and the next non-text symbol, in the specified logical direction.

GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Heredado de Object)
InsertLineBreak()

Inserta un salto de línea en la posición actual.Inserts a line break at the current position.

InsertParagraphBreak()

Inserta un salto de párrafo en la posición actual.Inserts a paragraph break at the current position.

InsertTextInRun(String)

Inserta el texto especificado en el Run del texto en la posición actual.Inserts the specified text into the text Run at the current position.

IsInSameDocument(TextPointer)

Indica si la posición especificada está en el mismo contenedor de texto que la posición actual.Indicates whether the specified position is in the same text container as the current position.

MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
ToString()

Este tipo o miembro es compatible con la infraestructura Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) y no está pensado para ser usado directamente desde su código.This type or member supports the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.

Se aplica a

Consulte también: