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

基本上,我试图使一个文本框的评论,但我习惯了WinForms MultiLine=true。我已经把MinLines设为3了,这就差不多了,但我更希望用户能够在这个块的任何地方输入,比如按enter,做点点之类的事情。例如:

- Item 1        blah
- Item 2                blahlb lahbvl   d

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

- Item 1         blah - Item 2                      blahb blahb blah

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

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


当前回答

与@Andre Luus相反,设置Height="Auto"不会使文本框拉伸。我发现的解决方案是设置VerticalAlignment="拉伸"

其他回答

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

您可能还希望启用AcceptsTab和SpellCheck。IsEnabled。

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

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

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

要使文本框拉伸,设置Height="Auto"。

更新:

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

与@Andre Luus相反,设置Height="Auto"不会使文本框拉伸。我发现的解决方案是设置VerticalAlignment="拉伸"

属性在WPF中唯一对应的属性

Winforms属性:TextBox。Multiline = true

是WPF属性:

TextBox.AcceptsReturn = true 

or

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

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