TextPointer.GetInsertionPosition(LogicalDirection) Methode

Definition

Gibt eine TextPointer bis zur nächstgelegenen Einfügeposition in der angegebenen logischen Richtung 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, der die logische Richtung angibt, in der nach der nächstgelegenen Einfügeposition gesucht werden soll.

Gibt zurück

A TextPointer bis zur nächstgelegenen Einfügeposition in der angegebenen Richtung.

Beispiele

In diesem Beispiel wird gezeigt, wie die Methode verwendet wird, um zu überprüfen, GetInsertionPosition 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 zugehörigen Inhalt zu unterbrechen. 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 (d. a. 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 zeigt, 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 Methode so angepasst, dass sie direkt nach dem Schließen der Formatierungssequenz auf die Einfügeposition zeigt. Betrachten Sie z. B. die Markupsequenz <Bold>a</Bold>b. Beachten Sie, dass es zwei Einfügepositionen zwischen den Buchstaben a und b - eine vor dem schließenden Tag und eine direkt nach dem schließenden BoldBold Tag gibt. Wenn GetInsertionPosition direkt nach dem Buchstaben TextPointer und vor dem schließenden a Tag eine Bold an die Position aufgerufen wird und mit einem direction von einem vonForward, wird die zurückgegebene TextPointer Position an die Position unmittelbar vor dem Buchstaben bnach dem schließenden Bold Tag angepasst. Beim Öffnen von Formatierungstags in entgegengesetzter logischer Richtung wird eine ähnliche Anpassung vorgenommen. Diese Methode soll eine Mehrdeutigkeit zwischen Einfügepositionen in ähnlichen Fällen ermöglichen.

Diese Methode kann auch verwendet werden, um selektive Einfügepunkte zu verwenden, wenn eine Abfolge struktureller Tags beteiligt ist. Wenn der Richtungsparameter beispielsweise an einer Position zwischen schließenden und öffnenden Absatztags liegt, kann der Richtungsparameter verwendet werden, um die nächstgelegene Einfügemarke am Anfang des folgenden Absatzes (durch Angabe LogicalDirection.Forward) oder am Ende des vorherigen Absatzes (durch Angabe LogicalDirection.Backward) auszuwählen.

Wenn sich der Zeiger bereits an der Einfügeposition befindet und keine angrenzenden Formatierungstags im angegebenen Bereich vorhanden directionsind, zeigt die zurückgegebenen TextPointer Punkte an derselben Position wie der Aufruf TextPointer.

Es ist möglich, dass keine gültige Einfügeposition relativ zur position vorhanden ist, auf die durch ein TextPointer. Dies kann passieren, 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 bis zur gleichen Position zurück wie die TextPointer , von der diese Methode aufgerufen wurde. Diese Methode gibt immer einen gültigen TextPointerWert zurück.

Gilt für:

Weitere Informationen