TextPointer.GetInsertionPosition(LogicalDirection) Método

Definição

Devolve a TextPointer à posição de inserção mais próxima na direção lógica especificada.

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

Parâmetros

direction
LogicalDirection

Um dos LogicalDirection valores que especifica a direção lógica para procurar a posição de inserção mais próxima.

Devoluções

A TextPointer para a posição de inserção mais próxima na direção especificada.

Exemplos

Este exemplo mostra como usar o GetInsertionPosition método para verificar se um especificado TextElement está vazio de conteúdo imprimível.

// Tests to see if the specified TextElement is empty (has no printatble content).
bool IsElementEmpty(TextElement element)
{
    // Find starting and ending insertion positions in the element.
    // Inward-facing directions are used to make sure that insertion position
    // will be found correctly in case when the element may contain inline 
    // formatting elements (such as a Span or Run that contains Bold or Italic elements).
    TextPointer start = element.ContentStart.GetInsertionPosition(LogicalDirection.Forward);
    TextPointer end = element.ContentEnd.GetInsertionPosition(LogicalDirection.Backward);
     
    // The element has no printable content if its first and last insertion positions are equal.
    return start.CompareTo(end) == 0;
} // End IsEmptyElement method.
' Tests to see if the specified TextElement is empty (has no printatble content).
Private Function IsElementEmpty(ByVal element As TextElement) As Boolean
    ' Find starting and ending insertion positions in the element.
    ' Inward-facing directions are used to make sure that insertion position
    ' will be found correctly in case when the element may contain inline 
    ' formatting elements (such as a Span or Run that contains Bold or Italic elements).
    Dim start As TextPointer = element.ContentStart.GetInsertionPosition(LogicalDirection.Forward)
    Dim [end] As TextPointer = element.ContentEnd.GetInsertionPosition(LogicalDirection.Backward)

    ' The element has no printable content if its first and last insertion positions are equal.
    Return start.CompareTo([end]) = 0

End Function ' End IsEmptyElement method.

Observações

Uma posição de inserção é uma posição onde pode ser adicionado novo conteúdo sem violar quaisquer regras semânticas para o conteúdo associado. Na prática, uma posição de inserção é em qualquer ponto do conteúdo onde um caret possa ser posicionado. Um exemplo de posição válida TextPointer que não é uma posição de inserção é a posição entre duas etiquetas adjacentes Paragraph (isto é, entre a etiqueta de encerramento do parágrafo anterior e a etiqueta de abertura do parágrafo seguinte).

Se o TextPointer já aponta para uma posição de inserção válida, mas a etiqueta de fecho para uma sequência de formatação não vazia segue diretamente essa posição na direção dada, então o TextPointer devolvido por este método é ajustado para apontar para a posição de inserção logo após o fecho da sequência de formatação. Por exemplo, considere a sequência <Bold>a</Bold>bde marcação . Note que existem duas posições de inserção entre as letras a e b - uma que precede a etiqueta de fecho Bold e outra logo após a etiqueta de fecho Bold . Se GetInsertionPosition for chamado por a TextPointer para a posição imediatamente após a letra a e antes da etiqueta de fecho Bold , e com a direction de Forward, o retorno TextPointer é ajustado para apontar para a posição imediatamente antes da letra b, depois da etiqueta de fecho Bold . Um ajuste semelhante é feito para abrir etiquetas de formatação quando se trabalha na direção lógica oposta. Este método destina-se a fornecer um meio de desambiguação entre posições de inserção em casos semelhantes.

Este método também pode ser usado para ser seletivo em relação aos pontos de inserção quando está envolvida uma sequência de etiquetas estruturais. Por exemplo, quando está numa posição entre as etiquetas de encerramento e abertura do parágrafo, o parâmetro de direção pode ser usado para selecionar o ponto de inserção mais próximo no início do parágrafo seguinte (especificando LogicalDirection.Forward) ou no final do parágrafo anterior (especificando LogicalDirection.Backward).

Se o ponteiro já estiver na posição de inserção, e não houver etiquetas de formatação adjacentes no especificado direction, o retorno TextPointer aponta para a mesma posição que o chamador TextPointer.

É possível que não exista uma posição de inserção válida relativamente à posição apontada por um TextPointer. Isto pode acontecer se o conteúdo referenciado for estruturalmente incompleto, como numa tabela ou lista vazia. Nesses casos, este método simplesmente devolve a TextPointer à mesma posição de onde TextPointer este método foi chamado. Este método devolve sempre um válido TextPointer.

Aplica-se a

Ver também