WPF: Holen Sie sich "gewickelt" text aus einer textbox
Gibt es einen Weg in WPF, um den text formatiert, wie er die Anzeige auf das Textfeld, wenn TextWrapping="Wrap"?
<TextBox Width="200"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto" />
Ich habe versucht, zu verwenden TextFormatter Klasse, aber es onty mir erlauben, ziehen Sie den text zu einer Zeichnung Kontext, in dem ich nur den text mit Zeilenumbruch enthalten.
- es tut mir Leid, konnte aber nicht verstehen, die Problematik. Ist es, dass Sie wollen, kopieren den text aus der textbox und beim einfügen von woanders würde gerne bewahren Sie die verpackte Positionen?
- Als text oder als Bild - /Bild?
- meinen genauen Fall ist, geben Sie den text für aktiv-Bericht unter Wahrung der gewickelten position also ich hab die gleiche Verpackung, als auf dem Bildschirm angezeigt. Also ich brauche es als Text.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, wie man den kompletten text mit scheinbaren Zeilenumbrüche.
Hinweis:
InputTextBox.ViewportWidth
. Möchten Sie vielleicht zu prüfen, wenn die endgültige Ausgabe ist genau wie gewünscht.Finden Sie unter: Erweiterte Text-Formatierung und Erweiterte Text-Formatierung Beispiel
Beispielcode
XAML:
Codebehind:
Siehe die Antwort von Ian Griffiths auf diese Frage: Holen Sie sich den Angezeigten Text aus dem TextBlock
Es wird der text angezeigt (wie es auf dem Bildschirm präsentiert werden) aus einem
TextBlock
aber ich denke, Sie sollten in der Lage sein, um es für eineTextBox
sowieFür die, die Sie haben zu schreiben, Ihre eigene Logik, indem Sie die Verwendung von text-Messung-API.
SCHRITT 1: Bresk den textbox-text in Worte.
SCHRITT 2: Dann Messen Sie sich jedes Wort Breite und kombinieren Sie, bis die Linienbreite ist kleiner als textbox-Breite.
Finden Sie diese post, die erklärt, über text-Messung. (social.msdn.microsoft.com/forums/en-US/wpf/thread/...)
Wenn alle Sie wollen, ist der text von textbox (text komplett und nicht nur der sichtbare Teil), werden als text angezeigt (mit offensichtlich Zeilenumbrüche) auf dem gleichen Fenster in einigen textblock, ein quick hack werden könnte:
Wenn Ihr Bedarf an einem anderen Ort, Sie können tragen Sie die Werte auf diesem Platz und auf den textblock gibt.
Wenn Sie den vollständigen text (mit offensichtlich Zeilenumbrüche) als Liste von Strings (z.B.
List<string>
), wo jedes Element repräsentiert den scheinbaren Linie, müssen Sie eine komplexe Lösung.Auch, wenn Sie nur den sichtbaren text in das Textfeld angezeigt, mal wieder eine komplexe Lösung erforderlich ist.