Многострочное текстовое поле WPF


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

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

- Item 1        blah
- Item 2                blahlb lahbvl   d

но на данный момент текст все остается на одной строке.

- Item 1         blah - Item 2                      blahb blahb blah

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

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

4 299

4 ответа:

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

вы также можете включить AcceptsTab и SpellCheck.IsEnabled тоже.

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

чтобы растянуть текстовое поле, установите Height="Auto".

обновление:

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

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

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

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