TextPointer.GetInsertionPosition(LogicalDirection) Methode

Definition

Gibt in der angegebenen logischen Richtung an der nächsten Einfügeposition einen TextPointer zurück.

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

Parameter

direction
LogicalDirection

Einer der LogicalDirection-Werte, mit denen die logische Richtung angegeben wird, in der die Suche nach der nächsten Einfügeposition erfolgen soll.

Gibt zurück

TextPointer

Ein TextPointer an der nächsten Einfügeposition in der angegebenen Richtung.

Beispiele

In diesem Beispiel wird gezeigt, wie Sie die GetInsertionPosition Methode verwenden, um zu überprüfen, ob ein angegebener TextElement Inhalt leer ist.

// 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.

Hinweise

Eine Einfügeposition ist eine Position, an der neue Inhalte hinzugefügt werden können, ohne semantische Regeln für den zugeordneten Inhalt zu brechen. In der Praxis befindet sich eine Einfügeposition an einer beliebigen Stelle im Inhalt, an der ein Caret positioniert werden kann. Ein Beispiel für eine gültige TextPointer Position, die keine Einfügeposition ist, ist die Position zwischen zwei angrenzenden Paragraph Tags (also zwischen dem schließenden Tag des vorherigen Absatzes und dem öffnenden Tag des nächsten Absatzes).

Wenn die TextPointer bereits auf eine gültige Einfügeposition verweist, aber das schließende Tag für eine nicht leere Formatierungssequenz direkt dieser Position in der angegebenen Richtung folgt, wird die TextPointer von dieser Methode zurückgegebene Position direkt nach dem Schließen der Formatierungssequenz an die Einfügeposition angepasst. Betrachten Sie beispielsweise die Markupsequenz <Bold>a</Bold>b. Beachten Sie, dass es zwei Einfügepositionen zwischen den Buchstaben a und b - einer, die dem schließenden Tag vorausgeht, und eine direkt nach dem Bold schließenden Bold Tag. Wird GetInsertionPosition eine position direkt nach dem Buchstaben a und vor dem schließenden Bold Tag aufgerufen, und mit einer direction von Forward, wird die zurückgegebene TextPointer Position direkt vor dem Buchstaben nach dem b``Bold schließenden Tag an die Position TextPointer angepasst. Eine ähnliche Anpassung erfolgt beim Öffnen von Formatierungstags beim Arbeiten in der entgegengesetzten logischen Richtung. Diese Methode soll eine Möglichkeit zur Disambiguation zwischen Einfügepositionen in ähnlichen Fällen bieten.

Diese Methode kann auch verwendet werden, um selektive Einfügepunkte zu verwenden, wenn eine Sequenz von strukturellen Tags beteiligt ist. Wenn Sie z. B. eine Position zwischen schließenden und öffnenden Absatztags haben, kann der Richtungsparameter verwendet werden, um die nächste Einfügemarke am Anfang des folgenden Absatzes (durch Angabe) oder am Ende des vorherigen Absatzes (durch AngabeLogicalDirection.ForwardLogicalDirection.Backward) auszuwählen.

Wenn der Zeiger bereits an der Einfügeposition liegt, und es gibt keine benachbarten Formatierungstags im angegebenen direction, die zurückgegebenen TextPointer Punkte an die gleiche Position wie der Aufruf TextPointer.

Es ist möglich, dass keine gültige Einfügeposition relativ zur Position vorhanden ist, die durch eine TextPointer. Dies kann geschehen, wenn der referenzierte Inhalt strukturell unvollständig ist, wie in einer leeren Tabelle oder Liste. In solchen Fällen gibt diese Methode einfach eine TextPointer an die gleiche Position wie die position zurück, aus der TextPointer diese Methode aufgerufen wurde. Diese Methode gibt immer einen gültigen TextPointerWert zurück.

Gilt für

Siehe auch