TextPointer.GetInsertionPosition(LogicalDirection) Metod

Definition

Returnerar en TextPointer till närmaste insättningsposition i den angivna logiska riktningen.

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

Parametrar

direction
LogicalDirection

Ett av de LogicalDirection värden som anger den logiska riktning som du vill söka efter närmaste insättningsposition i.

Returer

A TextPointer till närmaste insättningsposition i den angivna riktningen.

Exempel

Det här exemplet visar hur du använder GetInsertionPosition metoden för att kontrollera om en angiven TextElement är tom på utskrivbart innehåll.

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

Kommentarer

En insättningsposition är en position där nytt innehåll kan läggas till utan att bryta mot några semantiska regler för det associerade innehållet. I praktiken finns en insättningsposition var som helst i innehåll där en caret kan placeras. Ett exempel på en giltig TextPointer position som inte är en infogningsposition är positionen mellan två intilliggande Paragraph taggar (det vill säga mellan den avslutande taggen i föregående stycke och den inledande taggen i nästa stycke).

Om den TextPointer redan pekar på en giltig infogningsposition, men den avslutande taggen för en icke-tom formateringssekvens direkt följer den positionen i den angivna riktningen, justeras den TextPointer som returneras av den här metoden så att den pekar på insättningspositionen strax efter slutet av formateringssekvensen. Tänk till exempel på markeringssekvensen <Bold>a</Bold>b. Observera att det finns två infogningspositioner mellan bokstäverna a och b – en som föregår den avslutande Bold taggen och en direkt efter den avslutande Bold taggen. Om GetInsertionPosition anropas på en TextPointer till positionen direkt efter bokstaven a och före den avslutande Bold taggen, och med en direction av Forward, justeras den returnerade TextPointer så att den pekar på positionen precis före bokstaven b, efter den avslutande Bold taggen. En liknande justering görs för att öppna formateringstaggar när du arbetar i motsatt logisk riktning. Den här metoden är avsedd att ge ett sätt att skilja mellan insättningspositioner i liknande fall.

Den här metoden kan också användas för att vara selektiv när det gäller insättningspunkter när en sekvens med strukturella taggar ingår. När du till exempel befinner dig i en position mellan att stänga och öppna stycketaggar kan riktningsparametern användas för att välja närmaste insättningspunkt i början av följande stycke (genom att LogicalDirection.Forwardange ) eller i slutet av föregående stycke (genom att LogicalDirection.Backwardange ).

Om pekaren redan är i insättningsläge och det inte finns några intilliggande formateringstaggar i den angivna directionpekar de returnerade TextPointer punkterna till samma position som anropet TextPointer.

Det är möjligt att det inte finns någon giltig insättningsposition i förhållande till den position som pekar på av en TextPointer. Detta kan inträffa om det refererade innehållet är strukturellt ofullständigt, som i en tom tabell eller lista. I sådana fall returnerar den här metoden helt enkelt en TextPointer till samma position som metoden TextPointer anropades från. Den här metoden returnerar alltid en giltig TextPointer.

Gäller för

Se även