私はいくつかのフィードバックを送信するためのアプリを開発しています。
基本的にコメント用に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行にすべてのテキストとしてそれを残す必要がありますか?
TextBoxでTextWrapping="Wrap"
とAcceptsReturn="True"
を有効にします。
AcceptsTab
とSpellCheck.IsEnabled
も有効にしたいかもしれません。
また、私のように(エディターを使用せずに)XAMLにコントロールを直接追加した場合、これら2つのプロパティを設定した後でも、使用可能な高さまで伸びないことに不満を感じるかもしれません。
TextBoxを伸縮させるには、Height="Auto"
を設定します。
更新:
振り返ってみると、これはTextBoxのデフォルトスタイルの高さをAppリソースのどこかにあるアプリケーションの標準に指定するために必要だったに違いないと思います。これがあなたを助けてくれれば、これをチェックする価値があるかもしれません。
これはXAML
が複数行のテキストを受け付けることを可能にするサンプルTextBox
であり、それはそれ自身のScrollbarsを使用します:
<TextBox
Height="200"
Width="500"
TextWrapping="Wrap"
AcceptsReturn="True"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"/>
@Andre Luusとは反対に、Height="Auto"
を設定してもTextBox
は伸びません。私が見つけた解決策はVerticalAlignment="Stretch"
を設定することでした
プロパティのみ WPFでWinformsプロパティに対応するTextBox.Multiline = true
はTextBox.AcceptsReturn = true
です。
<TextBox AcceptsReturn="True" ...... />
VerticalAlignement
、WordWrap
などのその他の設定はすべて、TextBoxがUIでどのように対話するかを制御するだけで、Multiline
の動作には影響しません。