Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original

TextPointer (Clase)

Representa una posición dentro de un FlowDocument o TextBlock.

Espacio de nombres:  System.Windows.Documents
Ensamblado:  PresentationFramework (en PresentationFramework.dll)

public class TextPointer : ContentPosition

El tipo TextPointer expone los siguientes miembros.

  NombreDescripción
Propiedad públicaDocumentEndObtiene TextPointer al final del contenido en el contenedor de texto asociado a la posición actual.
Propiedad públicaDocumentStartObtiene TextPointer al principio del contenido en el contenedor de texto asociado a la posición actual.
Propiedad públicaHasValidLayoutObtiene un valor que indica si el contenedor de texto asociado a la posición actual tiene un diseño válido (actualizado).
Propiedad públicaIsAtInsertionPositionObtiene un valor que indica si la posición actual es una posición de inserción.
Propiedad públicaIsAtLineStartPositionObtiene un valor que indica si la posición actual está al principio de una línea.
Propiedad públicaLogicalDirectionObtiene 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.
Propiedad públicaParagraphObtiene el párrafo que establece el ámbito de la posición actual, si lo hay.
Propiedad públicaParentObtiene el elemento primario lógico que establece el ámbito de la posición actual.
Arriba

  NombreDescripción
Método públicoCompareToRealiza una comparación de ordinales entre las posiciones especificadas por el TextPointer actual y un segundo TextPointer especificado.
Método públicoDeleteTextInRunElimina el número de caracteres especificado de la posición indicada por el TextPointer actual.
Método públicoEquals(Object)Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object).
Método protegidoFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoGetAdjacentElementDevuelve el elemento, en caso de que exista, que limita al TextPointer actual en la dirección lógica especificada.
Método públicoGetCharacterRectDevuelve un rectángulo de selección (Rect) para el contenido que limita el TextPointer actual en la dirección lógica especificada.
Método públicoGetHashCodeActúa como función hash para un tipo concreto. (Se hereda de Object).
Método públicoGetInsertionPositionDevuelve TextPointer a la posición de inserción más cercana en la dirección lógica especificada.
Método públicoGetLineStartPosition(Int32)Devuelve TextPointer al principio de una línea que se especifica con respecto al TextPointer actual.
Método públicoGetLineStartPosition(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.
Método públicoGetNextContextPositionDevuelve un puntero al símbolo siguiente en la dirección lógica especificada.
Método públicoGetNextInsertionPositionDevuelve TextPointer a la posición de inserción siguiente en la dirección lógica especificada.
Método públicoGetOffsetToPositionDevuelve el recuento de símbolos entre el TextPointer actual y un segundo TextPointer especificado.
Método públicoGetPointerContextDevuelve un indicador de categoría para el contenido adyacente al TextPointer actual en la dirección lógica especificada.
Método públicoGetPositionAtOffset(Int32)Devuelve TextPointer a la posición indicada por el desplazamiento especificado, en símbolos, a partir del principio del TextPointer actual.
Método públicoGetPositionAtOffset(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.
Método públicoGetTextInRun(LogicalDirection)Devuelve una cadena que contiene cualquier texto adyacente al TextPointer actual en la dirección lógica especificada.
Método públicoGetTextInRun(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.
Método públicoGetTextRunLengthDevuelve 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.
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método públicoInsertLineBreakInserta un salto de línea en la posición actual.
Método públicoInsertParagraphBreakInserta un salto de párrafo en la posición actual.
Método públicoInsertTextInRunInserta el texto especificado en el Run del texto en la posición actual.
Método públicoIsInSameDocumentIndica si la posición especificada está en el mismo contenedor de texto que la posición actual.
Método protegidoMemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método públicoToStringEste tipo o miembro es compatible con la infraestructura de Windows Presentation Foundation (WPF) y no está pensado para utilizarse directamente desde el código. (Invalida a Object.ToString()).
Arriba

La clase TextPointer presenta la terminología siguiente:

  • Posición: de forma intrínseca, un TextPointer señala siempre a una posición en el contenido. Estas posiciones se encuentran entre caracteres en el contenido o entre las etiquetas de los elementos de contenido dinámico que definen la estructura para el contenido.

  • Posición actual: como TextPointer indica siempre una posición y como muchas de las operaciones que se pueden realizar mediante TextPointer se refieren a la posición actualmente señalada por TextPointer, tiene sentido referirse simplemente a la posición indicada por TextPointer como la posición actual.

  • Posición de inserción: una posición de inserción es una posición donde se puede agregar nuevo contenido sin romper ninguna regla semántica para el contenido asociado. En la práctica, una posición de inserción se puede encontrar en cualquier parte del contenido donde se pueda colocar un símbolo de intercalación. Un ejemplo de posición TextPointer válida que no sea una posición de inserción es la posición entre dos etiquetas Paragraph adyacentes (es decir, entre la etiqueta de cierre del párrafo anterior y la etiqueta de apertura del párrafo siguiente).

  • Símbolo: para el propósito de las operaciones TextPointer que implican símbolos, se considera cualquiera de los ejemplos siguientes como un símbolo:

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

    • Un elemento UIElement contenido dentro de un InlineUIContainer o BlockUIContainer. Observe que ese elemento UIElement siempre se cuenta exactamente como un símbolo; cualquier contenido o elemento adicional incluido en UIElement no se cuenta como símbolo.

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

  • Contenedor de texto: un contenedor de texto es el elemento que forma el verdadero límite del contenido dinámico actual; la posición indicada por TextPointer pertenece siempre a un contenedor de texto. Actualmente, un contenedor de texto debe ser FlowDocument o TextBlock. En general, no se admiten operaciones entre las instancias TextPointer en contenedores de texto diferentes.

  • Documento: el contenido de un contenedor de texto se conoce como documento, al igual que en el método IsInSameDocument, y las propiedades DocumentStart y DocumentEnd.

La clase TextPointer está pensada para facilitar la exploración transversal y la manipulación del contenido representado por elementos de contenido dinámico de Windows Presentation Foundation (WPF); en general, estos elementos se derivan de TextElement. Entre algunas de las operaciones que facilita TextPointer se incluyen las siguientes:

  • Realice una comparación de ordinales de la posición actual con una segunda posición especificada. Vea el método CompareTo.

  • Determine el tipo de contenido adyacente a la posición actual en una dirección especificada. Vea el método GetPointerContext y la enumeración TextPointerContext.

  • Obtenga TextElement que establece el ámbito o es adyacente a la posición actual. Vea Paragraph y el método GetAdjacentElement.

  • Obtenga el contenedor de texto que establece el ámbito del documento actual. Vea la propiedad Parent.

  • Obtenga un número de caracteres especificado que preceden o siguen a la posición actual. Vea el método GetTextInRun.

  • Inserte una cadena de caracteres en la posición actual. Vea el método InsertTextInRun.

  • Busque los límites de línea en el contenido. Vea el método GetLineStartPosition y la propiedad IsAtLineStartPosition.

  • Traduzca entre posiciones TextPointer y desplazamientos de símbolos en el contenido. Vea los métodos GetOffsetToPosition y GetPositionAtOffset.

  • Realice la prueba de posicionamiento visual traduciendo entre una posición TextPointer y Point que representa las coordenadas relativas.

  • Busque una posición de inserción cercana o compruebe si la posición actual es una posición de inserción. Vea los métodos GetInsertionPosition y GetNextInsertionPosition y la propiedad IsAtInsertionPosition.

La posición y LogicalDirection indicados por un objeto TextPointer son inmutables. Cuando se edita o modifica el contenido, la posición indicada por TextPointer no cambia con respecto al texto circundante; más bien se ajusta el desplazamiento de esa posición desde el principio del contenido en proporción para reflejar la nueva posición relativa en el contenido. Por ejemplo, un TextPointer que indica una posición al principio de un párrafo determinado continúa señalando al principio de ese párrafo cuando se inserta o elimina contenido antes o después del párrafo.

La clase TextPointer no proporciona constructores públicos. Una instancia de TextPointer se crea utilizando propiedades o métodos de otros objetos (incluso otros objetos TextPointer). La lista siguiente proporciona unos ejemplos de métodos y propiedades que crean y devuelven TextPointer. Esta lista no es exhaustiva:

El ejemplo siguiente muestra cómo utilizar TextPointer para buscar una posición justo dentro del primer elemento Run en un contenedor de texto especificado.


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


El ejemplo siguiente implementa un algoritmo de búsqueda sencillo mediante los medios TextPointer.


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


.NET Framework

Compatible con: 4, 3.5, 3.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft