394

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

基本上我正在尝试TextBox发表评论,但我已经习惯了 WinForms MultiLine=true。我已经设置MinLines为 3,它正在到达那里,但如果用户能够在此块中的任何位置键入,最好我会喜欢它 - 比如按 Enter 并做点点之类的事情。例如:

- Item 1        blah
- Item 2                blahlb lahbvl   d

但目前文本都停留在一行上。

- Item 1         blah - Item 2                      blahb blahb blah

然后,这些评论将有助于填写发送的电子邮件的正文。如果在将此字符串放入电子邮件正文字符串时无法轻松保持相同的格式(这样发送时的格式与键入时的格式相同),那可能毫无意义。

我可以实现我所追求的还是必须将其作为所有文本保留在一行上?

4

5 回答 5

813

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

您可能还希望启用AcceptsTabSpellCheck.IsEnabled

于 2010-04-16T02:47:17.223 回答
35

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

要使 TextBox 拉伸,请将Height="Auto".

更新:

回想起来,我认为这一定是必要的,这要归功于 TextBoxes 的默认样式,它在 App 资源中的某处为应用程序指定了某个标准的高度。如果这对您有帮助,可能值得检查一下。

于 2012-01-17T13:05:17.660 回答
30

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

<TextBox
Height="200"
Width="500"
TextWrapping="Wrap"
AcceptsReturn="True"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"/>
于 2016-12-28T08:18:46.000 回答
12

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

于 2013-05-06T16:15:35.027 回答
12

WPF 中唯一对应的属性

Winforms属性:TextBox.Multiline = true

WPF属性:TextBox.AcceptsReturn = true.

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

所有其他设置,例如等VerticalAlignement WordWrap仅控制 TextBox 在 UI 中的交互方式,但不影响Multiline行为。

于 2019-06-22T16:24:21.690 回答