TextPointer.GetInsertionPosition(LogicalDirection) Метод

Определение

Возвращение TextPointer к ближайшему положению вставки в заданном логическом направлении.Returns a TextPointer to the closest insertion position in the specified logical direction.

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, которое указывает логическое направление, в котором осуществляется поиск ближайшего положения вставки.One of the LogicalDirection values that specifies the logical direction in which to search for the closest insertion position.

Возвраты

TextPointer к ближайшему положению вставки в заданном направлении.A TextPointer to the closest insertion position in the specified direction.

Примеры

В этом примере показано, как использовать GetInsertionPosition метод для проверки того, является TextElement ли указанный объект пустым для печатного содержимого.This example shows how to use the GetInsertionPosition method to check whether a specified TextElement is empty of printable content.

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

Комментарии

Позиция вставки — это позиция, в которую можно добавить новое содержимое без нарушения семантических правил для связанного содержимого.An insertion position is a position where new content may be added without breaking any semantic rules for the associated content. На практике позиция вставки находится в любом месте содержимого, где может быть размещен курсор.In practice, an insertion position is anywhere in content where a caret may be positioned. Примером допустимой TextPointer позиции, которая не является позицией вставки, является положение между двумя соседними Paragraph тегами (то есть между закрывающим тегом предыдущего абзаца и открывающим тегом следующего абзаца).An example of a valid TextPointer position that is not an insertion position is the position between two adjacent Paragraph tags (that is, between the closing tag of the preceding paragraph and the opening tag of the next paragraph).

Если объект TextPointer уже указывает на допустимую позицию вставки, но закрывающий тег для непустой последовательности форматирования непосредственно следует за этой позицией в данном направлении, то значение TextPointer , возвращаемое этим методом, корректируется так, чтобы оно указывало на вставку. расположение сразу после закрытия последовательности форматирования.If the TextPointer already points to a valid insertion position, but the closing tag for a non-empty formatting sequence directly follows that position in the given direction, then the TextPointer returned by this method is adjusted to point to the insertion position just after the close of the formatting sequence. Например, рассмотрим последовательность <Bold>a</Bold>bразметки.For example, consider the markup sequence <Bold>a</Bold>b. Обратите внимание, что существуют две позиции вставки между a буквами и b -One, предшествующих Bold закрывающему тегу, и один непосредственно за Bold закрывающим тегом.Note that there are two insertion positions between the letters a and b - one that precedes the closing Bold tag, and one directly following the closing Bold tag. Если GetInsertionPosition метод вызывается TextPointer для к позиции непосредственно после буквы a и до закрывающего Bold тега, а WITH direction Forward, то возвращаемый TextPointer объект настраивается так, чтобы указывал на элемент располагать непосредственно перед буквой bпосле закрывающего Bold тега.If GetInsertionPosition is called on a TextPointer to the position directly after the letter a and before of the closing Bold tag, and with a direction of Forward, the returned TextPointer is adjusted to point to the position just before the letter b, after the closing Bold tag. Аналогичная корректировка выполняется для открытия тегов форматирования при работе в противоположном логическом направлении.A similar adjustment is made for opening formatting tags when working in the opposite logical direction. Этот метод предназначен для предоставления средств устранения неоднозначности между позициями вставки в похожих случаях.This method is intended to provide a means of disambiguation between insertion positions in similar cases.

Этот метод также можно использовать для избирательного использования точек вставки при использовании последовательности структурных тегов.This method can also be used to be selective about insertion points when a sequence of structural tags is involved. Например, если в позиции между закрывающим и открывающим тегами абзаца, параметр Direction можно использовать для выбора ближайшей точки вставки в начале следующего абзаца (указав LogicalDirection.Forward) или в конце предыдущего абзаца ( путем указания LogicalDirection.Backwardпараметра).For example, when at a position between closing and opening paragraph tags, the direction parameter can be used to select the closest insertion point at the beginning of the following paragraph (by specifying LogicalDirection.Forward) or at the end of the preceding paragraph (by specifying LogicalDirection.Backward).

Если указатель уже находится на позиции вставки и в указанном directionместе нет смежных тегов форматирования, возвращаемые TextPointer точки будут указывать на ту же позицию, что и TextPointerвызов.If the pointer is already at insertion position, and there are no adjacent formatting tags in the specified direction, the returned TextPointer points to the same position as the calling TextPointer.

Возможно, не существует допустимой позиции вставки относительно позиции, TextPointerна которую указывает.It is possible that no valid insertion position exists relative to the position pointed to by a TextPointer. Это может произойти, если содержимое, на которое указывает ссылка, является структурно неполным, как в пустой таблице или списке.This can happen if the referenced content is structurally incomplete, as in an empty table or list. В таких случаях этот метод просто возвращает TextPointer в ту же точку, что и, TextPointer из которой был вызван этот метод.In such cases, this method simply returns a TextPointer to the same position as the TextPointer from which this method was called. Этот метод всегда возвращает допустимый TextPointerобъект.This method always returns a valid TextPointer.

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

Дополнительно