我正在开发一个用于发送反馈的应用。
基本上我正在尝试为TextBox
发表评论,但我已经习惯了WinForms MultiLine=true
。我已将MinLines
设置为3,即将到达,但最好是我喜欢它,如果用户能够在此块中的任何位置键入 - 例如按Enter键并执行点点类型的操作。例如:
- Item 1 blah
- Item 2 blahlb lahbvl d
但目前文字都停留在一行。
- Item 1 blah - Item 2 blahb blahb blah
这些评论将有助于填写发送的电子邮件的正文。如果在将此字符串放入电子邮件正文字符串时无法轻松保持相同的格式设置(这样看起来就像在键入时一样发送它),这可能毫无意义。
我可以实现我所追求的目标,或者我必须将其作为所有文本留在一行吗?
答案 0 :(得分:696)
在TextBox上启用TextWrapping="Wrap"
和AcceptsReturn="True"
。
您可能还希望启用AcceptsTab
和SpellCheck.IsEnabled
。
答案 1 :(得分:32)
另外,如果像我一样,你直接在XAML中添加控件(不使用编辑器),即使设置了这两个属性,你也可能会感到沮丧的是它不会伸展到可用的高度。
要进行TextBox拉伸,请设置Height="Auto"
。
<强>更新强>
回想起来,我认为这一定是必要的,这要归功于TextBoxes的默认样式,它指定应用程序资源中某处应用程序的某些标准高度。如果这对你有帮助,可能值得一试。
答案 2 :(得分:15)
以下示例XAML
允许TextBox
接受多行文字并使用它自己的滚动条:
<TextBox
Height="200"
Width="500"
TextWrapping="Wrap"
AcceptsReturn="True"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"/>
答案 3 :(得分:10)
与@Andre Luus相反,设置Height="Auto"
不会使TextBox
伸展。我找到的解决方案是设置VerticalAlignment="Stretch"
答案 4 :(得分:1)
在WPF中与Winforms属性TextBox.Multiline = true
相对应的 only属性是TextBox.AcceptsReturn = true
。
<TextBox AcceptsReturn="True" ...... />
所有其他设置,例如VerticalAlignement
,WordWrap
等,仅控制TextBox在UI中的交互方式,而不会影响Multiline
的行为。