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或 BlockUIContainer 中包含的 InlineUIContainer 專案。 請注意,這類 UIElement 一律會計算為完全相同的一個符號;所包含的 UIElement 任何其他內容或元素不會算為符號。
文字 Run 專案內的 16 位 Unicode 字元。
如果下一個符號分類為 EmbeddedElement 、 ElementStart 或 ElementEnd (, GetPointerContext 如方法所識別) ,則 TextPointer 此方法所傳回的 會由目前位置的一個符號進階。
如果下一個符號分類為 Text ,則這個方法所傳回的 TextPointer 會進階到下一個非文字元號 (也就是不 Text) 的下一個位置 TextPointerContext 。 您可以呼叫 GetTextRunLength 方法來預先計算交叉的確切符號計數。