Многострочный для WPF TextBox

Я разрабатываю приложение для отправки некоторой обратной связи.

В основном я пытаюсь сделать TextBox для комментариев, но я привык к WinForms MultiLine=true. Я установил MinLines в 3, который добирается туда, но, желательно, мне хотелось бы, чтобы пользователь мог вводить туда, где есть этот блок - например, вводить и делать точечные точки. Например:

- Item 1        blah
- Item 2                blahlb lahbvl   d

Но в настоящий момент текст остается на одной строке.

- Item 1         blah - Item 2                      blahb blahb blah

Эти комментарии затем помогут заполнить тело отправленного сообщения электронной почты. Это может быть бессмысленно, если я не могу легко сохранить одно и то же форматирование, когда помещаю эту строку в строку тела электронной почты (чтобы она выглядела так, как она была отправлена, как при печати).

Могу ли я достичь того, что мне нужно, или мне нужно оставить его как весь текст в одной строке?

Ответ 1

Включите TextWrapping="Wrap" и AcceptsReturn="True" в своем текстовом поле.

Возможно, вы также захотите включить AcceptsTab и SpellCheck.IsEnabled.

Ответ 2

Кроме того, если, как и я, вы добавляете элементы управления непосредственно в XAML (не используя редактор), вы можете разочароваться в том, что он не будет растягиваться до доступной высоты даже после установки этих двух свойств.

Чтобы растянуть TextBox, установите Height="Auto".

UPDATE:

В ретроспективе я думаю, что это, должно быть, было необходимо благодаря стилю по умолчанию для TextBox, определяющему высоту некоторого стандарта для приложения где-то в ресурсах приложения. Возможно, стоит проверить это, если это вам помогло.

Ответ 3

Вот пример XAML, который позволит TextBox принимать многострочный текст и использует его собственные полосы прокрутки:

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

Ответ 4

В отличие от @Andre Luus, установка Height="Auto" не сделает растяжку TextBox. Решение, которое я нашел, заключалось в установке VerticalAlignment="Stretch"

Ответ 5

Единственное свойство, соответствующее в WPF свойству TextBox.Multiline = true - это TextBox.AcceptsReturn = true.

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

Все остальные параметры, такие как VerticalAlignement, WordWrap и т.д., Только управляют взаимодействием TextBox в пользовательском интерфейсе, но не влияют на поведение Multiline.