413 Stimmen

Mehrzeilige für WPF TextBox

Ich entwickle eine App für das Senden von Feedback.

Im Grunde versuche ich, eine TextBox für Kommentare, aber ich bin es gewohnt, die WinForms MultiLine=true . Ich habe eingestellt MinLines auf 3, was schon ganz gut ist, aber am liebsten wäre es mir, wenn der Benutzer in der Lage wäre, in diesem Block irgendetwas einzugeben - z. B. die Eingabetaste zu drücken und Punkte zu setzen. Zum Beispiel:

- Item 1        blah
- Item 2                blahlb lahbvl   d

Aber im Moment bleibt der Text immer in einer Zeile.

- Item 1         blah - Item 2                      blahb blahb blah

Diese Kommentare helfen dann, den Text einer gesendeten E-Mail zu füllen. Es könnte sinnlos sein, wenn ich nicht einfach die gleiche Formatierung beibehalten kann, wenn ich diese Zeichenfolge in den E-Mail-Text einfüge (so dass sie beim Versenden genauso aussieht wie beim Tippen).

Kann ich damit erreichen, was ich will, oder muss ich den gesamten Text in einer Zeile lassen?

847voto

itowlson Punkte 72130

Aktivieren Sie TextWrapping="Wrap" y AcceptsReturn="True" auf Ihrer TextBox.

Möglicherweise möchten Sie auch Folgendes aktivieren AcceptsTab y SpellCheck.IsEnabled zu.

37voto

FireFalcon Punkte 711

Hier ist ein Beispiel XAML die es ermöglichen wird TextBox um mehrzeiligen Text zu akzeptieren, und es verwendet seine eigenen Bildlaufleisten:

<TextBox
Height="200"
Width="500"
TextWrapping="Wrap"
AcceptsReturn="True"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"/>

36voto

Andre Luus Punkte 3594

Wenn Sie, wie ich, Steuerelemente direkt in XAML hinzufügen (ohne den Editor zu verwenden), könnte es Sie frustrieren, dass sich das Steuerelement nicht auf die verfügbare Höhe ausdehnt, selbst wenn Sie diese beiden Eigenschaften eingestellt haben.

Um die TextBox zu strecken, setzen Sie die Height="Auto" .

UPDATE:

Im Nachhinein denke ich, dass dies dank eines Standardstils für Textfelder, der die Höhe auf einen Standard für die Anwendung irgendwo in den App-Ressourcen festlegt, notwendig gewesen sein muss. Es kann sich lohnen, dies zu überprüfen, wenn dies Ihnen geholfen hat.

14voto

marsh-wiggle Punkte 2065

En nur Eigentum entspricht in WPF dem

Winforms Eigentum: TextBox.Multiline = true

ist die WPF Eigentum: TextBox.AcceptsReturn = true .

<TextBox AcceptsReturn="True" ...... />

Alle anderen Einstellungen, wie z. B. VerticalAlignement , WordWrap usw., steuern nur die Interaktion der TextBox in der Benutzeroberfläche, haben aber keinen Einfluss auf die Multiline Verhalten.

12voto

Elkvis Punkte 678

Im Gegensatz zu @Andre Luus, Einstellung Height="Auto" wird nicht die TextBox strecken. Die Lösung, die ich gefunden habe, war die Einstellung VerticalAlignment="Stretch"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X