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

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. Обратите внимание, что между буквами есть две позиции вставки a и b одна, которая предшествует закрывающему Bold тегу, и одна непосредственно после закрывающего Bold тега. Если GetInsertionPosition вызывается TextPointer в положение непосредственно после буквы a и перед закрывающим Bold тегом, а затем с обратным direction Forwardтегом возвращается TextPointer значение, указываемое на позицию непосредственно перед буквой bпосле закрывающего Bold тега. Аналогичная корректировка выполняется для открытия тегов форматирования при работе в противоположном логическом направлении. Этот метод предназначен для предоставления средств дискредитации между позициями вставки в аналогичных случаях.

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

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

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

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

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