TextPointer.GetInsertionPosition(LogicalDirection) Metódus

Definíció

TextPointer A legközelebbi beszúrási pozíciót adja vissza a megadott logikai irányban.

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

Paraméterek

direction
LogicalDirection

Az egyik LogicalDirection érték, amely meghatározza a legközelebbi beszúrási pozíció keresésének logikai irányát.

Válaszok

A TextPointer a legközelebbi beszúrási pozícióhoz a megadott irányban.

Példák

Ez a példa bemutatja, hogyan használható a GetInsertionPosition metódus annak ellenőrzésére, hogy egy megadott TextElement elem üres-e nyomtatható tartalomból.

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

Megjegyzések

A beszúrási pozíció olyan pozíció, ahol új tartalom adható hozzá a társított tartalom szemantikai szabályainak megszegése nélkül. A gyakorlatban a beszúrási pozíció bárhol megtalálható a tartalomban, ahol egy ápoló elhelyezhető. Egy olyan érvényes TextPointer pozícióra példa, amely nem beszúrási pozíció, a két szomszédos Paragraph címke (azaz az előző bekezdés záró címkéje és a következő bekezdés nyitó címkéje) közötti pozíció.

Ha a TextPointer már érvényes beszúrási pozícióra mutat, de egy nem üres formázási sorozat záró címkéje közvetlenül az adott irányban követi ezt a pozíciót, akkor TextPointer a metódus által visszaadott értéket a rendszer úgy állítja be, hogy közvetlenül a formázási sorozat bezárása után mutasson a beszúrási pozícióra. Vegyük például a korrektúrasorozatot <Bold>a</Bold>b. Vegye figyelembe, hogy két beszúrási pozíció van a betűk a között, és b az egyik a záró Bold címkét megelőző, a másik pedig közvetlenül a záró Bold címkét követi. Ha GetInsertionPosition közvetlenül a levél TextPointer után és a záró címke előtt, illetve a következővel aBolddirectionkérik Forward fel a pozícióra, a visszaadott TextPointer érték úgy van beállítva, hogy közvetlenül a betű belőtti pozícióra mutasson a zárócímke Bold után. Hasonló módosítás történik a formázási címkék megnyitásához, ha az ellenkező logikai irányban dolgozik. Ez a módszer arra szolgál, hogy hasonló esetekben egyértelműsítést biztosítson a beszúrási pozíciók között.

Ez a módszer használható a beszúrási pontok szelektív meghatározására is, ha szerkezeti címkék sorozata van jelen. Ha például a záró és a nyitó bekezdéscímkék közötti pozícióban az irányparaméter a legközelebbi beszúrási pont kiválasztásához használható a következő bekezdés elején (a megadásával LogicalDirection.Forward) vagy az előző bekezdés végén (megadásával LogicalDirection.Backward).

Ha az egérmutató már beszúrási pozícióban van, és a megadott directionhelyen nincsenek szomszédos formázási címkék, a visszaadott TextPointer pontok a hívással TextPointermegegyező helyre mutatnak.

Lehetséges, hogy nincs érvényes beszúrási pozíció a TextPointer. Ez akkor fordulhat elő, ha a hivatkozott tartalom szerkezetileg hiányos, mint egy üres táblában vagy listában. Ilyen esetekben ez a módszer egyszerűen ugyanazt a pozíciót adja vissza TextPointer , mint ahonnan ezt a TextPointer metódust meghívták. Ez a metódus mindig érvényes TextPointerértéket ad vissza.

A következőre érvényes:

Lásd még