web-dev-qa-db-ja.com

WPF TextBoxのマルチライン

私はいくつかのフィードバックを送信するためのアプリを開発しています。

基本的にコメント用にTextBoxを作成しようとしていますが、私はWinFormsのMultiLine=trueに慣れています。私はMinLinesを3に設定していますが、できればユーザーがこのブロックのどこにでも入力できるのであればいいのです。例えば:

- Item 1        blah
- Item 2                blahlb lahbvl   d

しかし現時点では、テキストはすべて1行に留まっています。

- Item 1         blah - Item 2                      blahb blahb blah

これらのコメントは送信されるEメールの本文を埋めるのに役立ちます。この文字列をEメール本文の文字列に入れるときに同じフォーマットを簡単に維持できない場合は、無意味かもしれません(入力時と同じように送信時と同じように見えるため)。

私がしていることを達成することはできますか?それとも1行にすべてのテキストとしてそれを残す必要がありますか?

328
baron

TextBoxでTextWrapping="Wrap"AcceptsReturn="True"を有効にします。

AcceptsTabSpellCheck.IsEnabledも有効にしたいかもしれません。

700
itowlson

また、私のように(エディターを使用せずに)XAMLにコントロールを直接追加した場合、これら2つのプロパティを設定した後でも、使用可能な高さまで伸びないことに不満を感じるかもしれません。

TextBoxを伸縮させるには、Height="Auto"を設定します。

更新:

振り返ってみると、これはTextBoxのデフォルトスタイルの高さをAppリソースのどこかにあるアプリケーションの標準に指定するために必要だったに違いないと思います。これがあなたを助けてくれれば、これをチェックする価値があるかもしれません。

33
Andre Luus

これはXAMLが複数行のテキストを受け付けることを可能にするサンプルTextBoxであり、それはそれ自身のScrollbarsを使用します:

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

@Andre Luusとは反対に、Height="Auto"を設定してもTextBoxは伸びません。私が見つけた解決策はVerticalAlignment="Stretch"を設定することでした

10
Elkvis

プロパティのみ WPFでWinformsプロパティに対応するTextBox.Multiline = trueTextBox.AcceptsReturn = trueです。

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

VerticalAlignementWordWrapなどのその他の設定はすべて、TextBoxがUIでどのように対話するかを制御するだけで、Multilineの動作には影響しません。

1
marsh-wiggle