WPF标签中的换行符?

Nat*_*ium 82 wpf label newline

如何在WPF中的标签文本中添加换行符,如下所示?

<Label>Lorem 
  ipsum</Label>
Run Code Online (Sandbox Code Playgroud)

Szy*_*zga 113

<Label><TextBlock>Lorem<LineBreak/>ipsum</TextBlock></Label>
Run Code Online (Sandbox Code Playgroud)

您需要使用TextBlock,因为TextBlock作为子项接受Inline对象的集合.所以你给TextBlock元素三个内联项:Run Text ="Lorem",LineBreak和Run Text ="ipsum".

您不能执行以下操作:

<Label>Lorem<LineBreak/>ipsum</Label>`
Run Code Online (Sandbox Code Playgroud)

因为标签接受一个内容子元素.

此外,不确定您的用例是什么,但请注意我在Label元素中放置了一个TextBlock.这是重复的吗?不是真的,取决于你的需要.这是一篇关于两个元素之间差异的好文章:Label和TextBlock之间的区别

  • 这很好用但在使用本地化时没用.在那种情况下使用'Lorem&#x0a; Ipsum` (3认同)

00j*_*0jt 93

在WPF中,您可以使用值"&#10;""&#xA;"

例如:

<Label Content="Lorem&#10;ipsum" />
Run Code Online (Sandbox Code Playgroud)

("10"是换行符的ASCII码)

要么

<Label Content="Lorem&#xA;ipsum" />
Run Code Online (Sandbox Code Playgroud)

("A"是换行符的ASCII码,以十六进制表示)

例如,带有边框arround标签以显示边界

  • 好一个.这应该是公认的答案. (2认同)
  • 同意这应该是公认的答案.它更优雅,更简单易用. (2认同)
  • 如果直接放入 XAML,则效果很好,但放入资源字符串时似乎不起作用 - 它仅在标签中显示 Lorem Ipsum。正如@stijn 指出的,这是本地化所需要的,但它不起作用。 (2认同)

Hey*_*iko 7

在ViewModel或Model中进行此操作时,我发现使用Environment.NewLine具有最一致的结果,包括本地化。它也应该直接在View中工作,但是我还没有测试过。

例:

在视图中

<Label Content="{Binding SomeStringObject.ParameterName}" />
Run Code Online (Sandbox Code Playgroud)

在ViewModel中:

SomeStringObject.ParameterName = "First line" + Environment.NewLine + "Second line";
Run Code Online (Sandbox Code Playgroud)