Я разрабатываю приложение для отправки некоторой обратной связи.
В основном я пытаюсь сделать 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
.