TextPointer.GetInsertionPosition(LogicalDirection) Метод

Определение

TextPointer Возвращает до ближайшей позиции вставки в указанном логическом направлении.

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

Параметры

direction
LogicalDirection

Одно из LogicalDirection значений, указывающее логическое направление, в котором выполняется поиск ближайшей позиции вставки.

Возвращаемое значение

К TextPointer ближайшей позиции вставки в указанном направлении.

Примеры

В этом примере показано, как использовать GetInsertionPosition метод для проверки того, является ли указанный TextElement пуст из печатного содержимого.

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

Комментарии

Позиция вставки — это позиция, в которой новое содержимое может быть добавлено без нарушения каких-либо семантических правил для связанного содержимого. На практике позиция вставки находится в любом месте содержимого, где может находиться курсор. Пример допустимой TextPointer позиции, которая не является позицией вставки, — позиция между двумя смежными Paragraph тегами (то есть между закрывающим тегом предыдущего абзаца и открывающим тегом следующего абзаца).

TextPointer Если уже указывает на допустимую позицию вставки, но закрывающий тег для непустой последовательности форматирования непосредственно следует этой позиции в заданном направлении, TextPointer то возвращаемый этим методом корректируется, чтобы указать позицию вставки сразу после закрытия последовательности форматирования. Например, рассмотрим последовательность <Bold>a</Bold>bразметки. Обратите внимание, что между буквами и между буквами ab есть две позиции вставки, которая предшествует закрывающем тегу, и одна непосредственно после закрывающего BoldBold тега. Если GetInsertionPosition вызывается TextPointer на позицию непосредственно после буквы a и перед закрывающим тегом, а BolddirectionForward затем возвращается значение, указываемое на позицию непосредственно перед буквойTextPointer, после закрывающего bBold тега. Аналогичная корректировка выполняется для открытия тегов форматирования при работе в противоположном логическом направлении. Этот метод предназначен для предоставления средства диамбигуации между позициями вставки в аналогичных случаях.

Этот метод также можно использовать для выборки точек вставки при использовании последовательности структурных тегов. Например, при расположении между закрывающим и открывающим тегами абзаца параметр направления можно использовать для выбора ближайшей точки вставки в начале следующего абзаца (указавLogicalDirection.Forward) или в конце предыдущего абзаца (указав).LogicalDirection.Backward

Если указатель уже находится в позиции вставки, и в указанном месте directionформатирования нет смежных тегов форматирования, возвращаемые TextPointer точки в той же позиции, что и вызов TextPointer.

Возможно, что допустимое положение вставки не существует относительно позиции, на которую указывает указатель TextPointer. Это может произойти, если указанное содержимое является структурны неполным, как в пустой таблице или списке. В таких случаях этот метод просто возвращает TextPointer ту же позицию, из TextPointer которой был вызван этот метод. Этот метод всегда возвращает допустимый TextPointer.

Применяется к

См. также раздел