Meine Beobachtungen:
Beim Testen einer WPF-Anwendung mit einem Wrap-fähigen TextBox für mehrzeiligen Text, wenn ich einfach mit der Eingabe von Wörtern anfange und die rechte Seite der TextBox erreiche, werden Wörter und Cursor zur nächsten Zeile auf der Basis von letzter Platz / Bruch der Charaktere in meiner Eingabe.
Wenn in der ersten Zeile ein einzelnes Zeichen eingegeben wird und dann die Leertaste gedrückt gehalten wird, wird der Cursor in der TextBox nicht angezeigt und springt nicht in die zweite Zeile, wenn der Cursor das Ende der ersten Zeile erreicht. Sobald ich etwas anderes als ein Leerzeichen eintippe, wird das Zeichen umbrochen und beginnt am Anfang der zweiten Zeile. Wenn ich die linke Pfeiltaste verwende, um rückwärts zu gehen, verschwindet der Cursor von der zweiten Zeile und wird für einige Zeit in der ersten Zeile nicht sichtbar sein, bis er sich durch alle Leerzeichen bewegt, die vorher Typ waren. Wenn ich den Cursor an das Ende der ersten Zeile setze und ein anderes Nicht-Leerzeichen eintippe, wird dieses Zeichen im Allgemeinen in die zweite Zeile mit mehreren Leerzeichen vor dem vorherigen Zeichen in der zweiten Zeile eingefügt. Relativ zum Text in der TextBox enthält der Inhalt alle sichtbaren Zeichen sowie alle Leerzeichen außerhalb des Ansichtsbereichs der TextBox.
Meine Frage:
Gibt es eine Eigenschaft für die TextBox, die ich vermisse, um zu verhindern, dass die Leerzeichen die zweite Zeile umbrechen, wenn sie das Ende der ersten Zeile erreichen, anstatt vom Bildschirm abzurollen?
Danke.
Markieren
Haben einige Nachforschungen und das Ersetzen von Leerzeichen "" mit nichtbrechendem Leerzeichen "/ u00a0" bei Textänderungen den Cursor innerhalb der Grenzen der Textbox gehalten.
Ich habe das einfach als Beweis des Konzepts verdrahtet, dies wird zu rekursiven Aufrufen führen, also benutze das nicht im Produktionscode. Vielleicht verwenden Sie stattdessen einen Konverter oder vielleicht Ihren datengebundenen Property-Setter?