TextPointer.GetNextContextPosition(LogicalDirection) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回一个指向指定逻辑方向上的下一个符号的指针。
public:
System::Windows::Documents::TextPointer ^ GetNextContextPosition(System::Windows::Documents::LogicalDirection direction);
public System.Windows.Documents.TextPointer GetNextContextPosition (System.Windows.Documents.LogicalDirection direction);
member this.GetNextContextPosition : System.Windows.Documents.LogicalDirection -> System.Windows.Documents.TextPointer
Public Function GetNextContextPosition (direction As LogicalDirection) As TextPointer
参数
- direction
- LogicalDirection
LogicalDirection 值之一,它指定搜索下一个符号时的逻辑方向。
返回
一个指向请求方向上的下一个符号的 TextPointer;或者,如果当前 TextPointer 是内容开始或结束位置的边界,则为 null
。
示例
以下示例演示了此方法的用法。 该示例将 GetNextContextPosition 该方法与该方法结合使用 GetPointerContext 来遍历和提取指定 TextElement符号。
虽然该示例可用于提取给定 TextElement内容的 XAML 结构,但它仅用于说明目的,不应用于生产代码。 System.Xml请参阅用于处理 XML 的丰富类型的命名空间。
// This method will extract and return a string that contains a representation of
// the XAML structure of content elements in a given TextElement.
string GetXaml(TextElement element)
{
StringBuilder buffer = new StringBuilder();
// Position a "navigator" pointer before the opening tag of the element.
TextPointer navigator = element.ElementStart;
while (navigator.CompareTo(element.ElementEnd) < 0)
{
switch (navigator.GetPointerContext(LogicalDirection.Forward))
{
case TextPointerContext.ElementStart :
// Output opening tag of a TextElement
buffer.AppendFormat("<{0}>", navigator.GetAdjacentElement(LogicalDirection.Forward).GetType().Name);
break;
case TextPointerContext.ElementEnd :
// Output closing tag of a TextElement
buffer.AppendFormat("</{0}>", navigator.GetAdjacentElement(LogicalDirection.Forward).GetType().Name);
break;
case TextPointerContext.EmbeddedElement :
// Output simple tag for embedded element
buffer.AppendFormat("<{0}/>", navigator.GetAdjacentElement(LogicalDirection.Forward).GetType().Name);
break;
case TextPointerContext.Text :
// Output the text content of this text run
buffer.Append(navigator.GetTextInRun(LogicalDirection.Forward));
break;
}
// Advance the naviagtor to the next context position.
navigator = navigator.GetNextContextPosition(LogicalDirection.Forward);
} // End while.
return buffer.ToString();
} // End GetXaml method.
' This method will extract and return a string that contains a representation of
' the XAML structure of content elements in a given TextElement.
Private Function GetXaml_Renamed(ByVal element As TextElement) As String
Dim buffer As New StringBuilder()
' Position a "navigator" pointer before the opening tag of the element.
Dim navigator As TextPointer = element.ElementStart
Do While navigator.CompareTo(element.ElementEnd) < 0
Select Case navigator.GetPointerContext(LogicalDirection.Forward)
Case TextPointerContext.ElementStart
' Output opening tag of a TextElement
buffer.AppendFormat("<{0}>", navigator.GetAdjacentElement(LogicalDirection.Forward).GetType().Name)
Case TextPointerContext.ElementEnd
' Output closing tag of a TextElement
buffer.AppendFormat("</{0}>", navigator.GetAdjacentElement(LogicalDirection.Forward).GetType().Name)
Case TextPointerContext.EmbeddedElement
' Output simple tag for embedded element
buffer.AppendFormat("<{0}/>", navigator.GetAdjacentElement(LogicalDirection.Forward).GetType().Name)
Case TextPointerContext.Text
' Output the text content of this text run
buffer.Append(navigator.GetTextInRun(LogicalDirection.Forward))
End Select
' Advance the naviagtor to the next context position.
navigator = navigator.GetNextContextPosition(LogicalDirection.Forward)
Loop ' End while.
Return buffer.ToString()
End Function ' End GetXaml method.
注解
以下任一项被视为符号:
元素的 TextElement 开始或结束标记。
UIElement包含在或 InlineUIContainer BlockUIContainer. 中的元素。 请注意,此类 UIElement 始终被计为一个符号;任何其他内容或元素 UIElement 不包含在符号中。
文本 Run 元素内的 16 位 Unicode 字符。
如果下一个符号分类为 EmbeddedElement, ElementStart或 ElementEnd (由方法) 标识 GetPointerContext ,则 TextPointer 此方法返回的符号正好由当前位置的一个符号进行高级。
如果下一个符号被分类为Text,则TextPointer此方法返回的文本将高级粘贴到下一个非文本符号 (,即不Text) 的TextPointerContext下一个位置。 通过调用 GetTextRunLength 该方法可以提前计算交叉的确切符号计数。