IWpfTextView.TextViewLines
to zbiór widocznych linii. W niektórych przypadkach pierwsza i ostatnia linia może być ukryta lub częściowo widoczna (ale druga i druga do ostatnia linia powinny być zawsze w pełni widoczne). Aby uzyskać kolekcję w pełni widocznych linii, możesz użyć IWpfTextView.TextViewLines.FirstVisibleLine
i IWpfTextView.TextViewLines.LastVisibleLine
lub przefiltrować kolekcję przez ITextViewLine.VisibilityState == VisibilityState.FullyVisible
.
A Span
to struktura do zawijania pozycji początkowej i długości, ale nie zawiera faktycznego tekstu. Istnieje wiele rodzajów rozpiętości w Edytorze VS do różnych celów, na przykład SnapshotSpan
jest rozpiętością od ITextSnapshot
, która przechowuje pozycję początkową, długość i migawkę, do której należy.
Edit:
Niestety brakowało mi na pytanie w tytule.
A Point
odnosi się do pozycji, a Span
odnosi się do zakresu. Większość interfejsów API Edytora VS, które przyjmują jeden parametr, ma przeciążenie dla drugiego.
ITrackingPoint
i ITrackingSpan
są wyłączone z ITextBuffer
. "Śledzenie" oznacza przesunięcie/powiększenie/zmniejszenie w miarę zmiany bufora tekstowego. Są migawkowe agnostyczne.
SnapshotPoint
i SnapshotSpan
są wyłączone z ITextSnapshot
. Są one powiązane z ITextSnapshot
i są niezmienne.
jest sformatowaną linią do wyświetlenia. Zazwyczaj nie trzeba go zmieniać, pobierając jedynie informacje wizualne, takie jak Height
lub VisibilityState
.
Dobra, do mojej własnej aktualizacji. – Chris
Zapomniałem zaktualizować. 1. W widokach tekstowych nie są uwzględniane linie. Dzieje się tak z powodu konturowania, zawijania wyrazów itp., Co odróżnia TextBuffer od bufora wizualnego. 2. SnapshotSpan vs SnapshotPoint - Span reprezentuje ciąg znaków. Punkt, jedna postać. 3. TrackingPoint vs TrackingSpan. Podobnie jak w innych punktach i zakresach, z wyjątkiem sytuacji, w których określa się pozycję w oknie ViewPort. Myślę, że mam rację. Lub przynajmniej wydaje się poruszać w ten sposób. – Chris