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 标记之后。 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. 在相反的逻辑方向工作时,对打开格式标记进行了类似的调整。 此方法旨在提供类似情况下插入位置之间的歧义方法。

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

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

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

适用于

另请参阅