Udostępnij za pośrednictwem


TextPointer.GetInsertionPosition(LogicalDirection) Metoda

Definicja

Zwraca wartość do TextPointer najbliższej pozycji wstawiania w określonym kierunku logicznym.

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

Parametry

direction
LogicalDirection

LogicalDirection Jedna z wartości, która określa kierunek logiczny, w którym należy wyszukać najbliższą pozycję wstawiania.

Zwraca

TextPointer

A TextPointer do najbliższej pozycji wstawiania w określonym kierunku.

Przykłady

W tym przykładzie pokazano, jak za pomocą GetInsertionPosition metody sprawdzić, czy określona TextElement zawartość jest pusta z możliwością drukowania.

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

Uwagi

Pozycja wstawiania to pozycja, w której można dodać nową zawartość bez przerywania żadnych reguł semantycznych dla skojarzonej zawartości. W praktyce pozycja wstawiania jest w dowolnym miejscu w zawartości, w której może być umieszczona karetki. Przykładem prawidłowej TextPointer pozycji, która nie jest pozycją wstawiania, jest pozycja między dwoma sąsiednimi Paragraph tagami (czyli między tagiem zamykającym poprzedniego akapitu a tagiem otwierającym następnego akapitu).

TextPointer Jeśli już wskazuje prawidłową pozycję wstawiania, ale tag zamykający dla sekwencji formatowania niepustego bezpośrednio następuje po tej pozycji w danym kierunku, zwracany TextPointer przez tę metodę jest dostosowywany do wskazywania pozycji wstawiania tuż po zamknięciu sekwencji formatowania. Rozważmy na przykład sekwencję <Bold>a</Bold>bznaczników . Należy pamiętać, że między literami a i b istnieją dwa pozycje wstawiania — jeden poprzedzający tag zamykający Bold , a jeden bezpośrednio po tagu zamykającym Bold . Jeśli GetInsertionPosition element jest wywoływany na TextPointer pozycji bezpośrednio po literze a i przed tagiem zamykającymBold, a element z wartością Forwarddirection , zwracany TextPointer element jest dostosowywany w taki sposób, aby wskazywał położenie tuż przed literą b, po tagu zamykającymBold. Podobne dostosowanie jest wprowadzane do otwierania tagów formatowania podczas pracy w przeciwnym kierunku logicznym. Ta metoda ma na celu zapewnienie środków uściślania między pozycjami wstawiania w podobnych przypadkach.

Ta metoda może również służyć do selektywnego określania punktów wstawiania w przypadku sekwencji tagów strukturalnych. Na przykład, gdy na pozycji między zamykaniem i otwieraniem tagów akapitu, parametr kierunku może służyć do wybrania najbliższego punktu wstawiania na początku następującego akapitu (przez określenie LogicalDirection.Forward) lub na końcu poprzedniego akapitu (przez określenie LogicalDirection.Backward).

Jeśli wskaźnik znajduje się już w pozycji wstawiania i nie ma sąsiednich tagów formatowania w określonym directionobiekcie , zwracane TextPointer punkty do tej samej pozycji co wywołanie TextPointer.

Istnieje możliwość, że nie istnieje prawidłowa pozycja wstawiania względem pozycji wskazywanej TextPointerprzez element . Może się tak zdarzyć, jeśli zawartość, do których odwołuje się odwołanie, jest strukturalnie niekompletna, tak jak w pustej tabeli lub liście. W takich przypadkach ta metoda po prostu zwraca TextPointer obiekt do tej samej pozycji co TextPointer metoda, z której została wywołana ta metoda. Ta metoda zawsze zwraca prawidłowy TextPointerelement .

Dotyczy

Zobacz też