Share via


TextPointer.GetInsertionPosition(LogicalDirection) Método

Definição

Retorna um TextPointer para a 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 valores LogicalDirection que especifica a direção lógica na qual pesquisar a posição de inserção mais próxima.

Retornos

TextPointer

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

Comentários

Uma posição de inserção é uma posição em que o novo conteúdo pode ser adicionado sem violar regras semânticas para o conteúdo associado. Na prática, uma posição de inserção está em qualquer lugar no conteúdo em que um cursor pode ser posicionado. Um exemplo de uma posição válida TextPointer que não é uma posição de inserção é a posição entre duas marcas adjacentes Paragraph (ou seja, entre a marca de fechamento do parágrafo anterior e a marca de abertura do próximo parágrafo).

Se o TextPointer já apontar para uma posição de inserção válida, mas a marca de fechamento de uma sequência de formatação não vazia seguir diretamente essa posição na direção determinada, o TextPointer retornado por esse método será ajustado para apontar para a posição de inserção logo após o fechamento da sequência de formatação. Por exemplo, considere a sequência <Bold>a</Bold>bde marcação. Observe que há duas posições de inserção entre as letras a e b uma que precede a marca de fechamento Bold e outra seguindo diretamente a marca de fechamento Bold . Se GetInsertionPosition for chamado para a TextPointer posição diretamente após a letra a e antes da marca de fechamento Bold e com um direction de Forward, o retornado TextPointer será ajustado para apontar para a posição logo antes da letra b, após a marca de fechamento Bold . Um ajuste semelhante é feito para abrir marcas de formatação ao trabalhar na direção lógica oposta. Esse método destina-se a fornecer um meio de desambiguação entre posições de inserção em casos semelhantes.

Esse método também pode ser usado para ser seletivo sobre pontos de inserção quando uma sequência de marcas estruturais estiver envolvida. Por exemplo, quando em uma posição entre marcas de parágrafo de fechamento e abertura, 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 a seguir (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 marcas de formatação adjacentes no especificado direction, os pontos retornados serão retornados TextPointer para a mesma posição que a chamada TextPointer.

É possível que nenhuma posição de inserção válida exista em relação à posição apontada por um TextPointer. Isso pode acontecer se o conteúdo referenciado estiver estruturalmente incompleto, como em uma tabela ou lista vazia. Nesses casos, esse método simplesmente retorna uma TextPointer para a mesma posição TextPointer da qual esse método foi chamado. Esse método sempre retorna um valor válido TextPointer.

Aplica-se a

Confira também