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标记之前的位置上调用,Bold并且返回的值为 a directionForward,则返回TextPointer的位置将调整为指向字母b前的位置,在结束Bold标记之后。 在相反的逻辑方向工作时,对打开格式标记进行了类似的调整。 此方法旨在提供类似情况下插入位置之间的消除歧义的方法。

当涉及结构标记序列时,此方法还可用于选择性地选择插入点。 例如,当在结束段落标记和开始段落标记之间的位置时,方向参数可用于选择下一段开头最近的插入点(通过指定LogicalDirection.Forward)或上一段末尾(通过指定)。LogicalDirection.Backward

如果指针已位于插入位置,并且指定 direction中没有相邻的格式标记,则返回 TextPointer 的指向与调用 TextPointer相同的位置。

不存在相对于由 a TextPointer指向的位置的有效插入位置。 如果引用的内容在结构上不完整(如空表或列表中所示),则可能会发生这种情况。 在这种情况下,此方法只返回 TextPointer 与从中调用此方法的位置相同的位置 TextPointer 。 此方法始终返回有效的 TextPointer

适用于

另请参阅