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
. Обратите внимание, что между буквами есть две позиции вставки 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.