多行WPF文本框

我正在开发一个发送反馈的应用程序。

基本上,我试图使一个TextBox注释,但我习惯了WinForms MultiLine=true。我已经将MinLines设置为3,这就快到了,但我更希望用户能够在这个块的任何地方输入——比如按回车键,做点点之类的事情。例如:

- Item 1        blah
- Item 2                blahlb lahbvl   d

但目前所有文本都保持在一行上。

- Item 1         blah - Item 2                      blahb blahb blah

这些评论将有助于填充所发送邮件的正文。这可能是毫无意义的,如果我不能很容易地保持相同的格式,当把这个字符串放入电子邮件正文字符串(使它看起来像它在发送时,因为它在打字时)。

我可以实现我想要的东西,还是我必须把它作为一行上的所有文本?

336811 次浏览

在文本框上启用TextWrapping="Wrap"AcceptsReturn="True"

你可能也希望启用AcceptsTabSpellCheck.IsEnabled

另外,如果像我一样,直接在XAML中添加控件(不使用编辑器),可能会感到沮丧,因为即使设置了这两个属性,控件也无法扩展到可用的高度。

要使文本框具有伸缩性,请设置Height="Auto". txt。

更新:

回想起来,我认为这必须是必要的,因为文本框的默认样式指定了应用程序在应用程序资源中的某个标准的高度。如果这对你有帮助的话,检查一下是值得的。

@Andre Luus,设置相反,Height="Auto"不会拉伸TextBox。我找到的解决方案是设置VerticalAlignment="Stretch"

下面是一个示例XAML,它将允许TextBox接受多行文本,并且它使用自己的滚动条:

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

只有产权在WPF中对应于

Winforms属性:TextBox.Multiline = true

WPF属性:

TextBox.AcceptsReturn = true

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

所有其他设置,如VerticalAlignement WordWrap等,只控制文本框如何在UI中交互,但不影响Multiline行为。