WPF标签中的换行符?


83

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

<Label>Lorem 
  ipsum</Label>

Answers:


116
<Label><TextBlock>Lorem<LineBreak/>ipsum</TextBlock></Label>

您需要使用TextBlock,因为TextBlock接受Inline对象的集合作为子代。因此,您将为TextBlock元素提供三个内联项:Run Text =“ Lorem”,LineBreak和Run Text =“ ipsum”。

您不能执行以下操作:

<Label>Lorem<LineBreak/>ipsum</Label>`

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

另外,不确定确切的用例是什么,但是请注意我在您的Label元素内放置了一个TextBlock。重复吗?并非完全取决于您的需要。这是一篇很好的文章,介绍了两个元素之间的区别:Label和TextBlock之间的区别


1
当我尝试上述答案时,在内容中间包含标签时出现错误。取而代之的是,我使用了: <TextBlock> <Run>First</Run> <LineBreak/> <Run>Second</Run> </TextBlock>
病原体

3
这很好用,但是在使用本地化时没有用。在这种情况下,使用Lorem&#x0a;Ipsum
stijn

103

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

例如:

<Label Content="Lorem&#10;ipsum" />

(“ 10”是换行符的ASCII码)

要么

<Label Content="Lorem&#xA;ipsum" />

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

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


3
同意这应该是公认的答案。它更优雅,更易于使用。
泰勒·C

10

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

例:

在视图中

<Label Content="{Binding SomeStringObject.ParameterName}" />

在ViewModel中:

SomeStringObject.ParameterName = "First line" + Environment.NewLine + "Second line";

2

如何将多行工具提示添加到控件(例如按钮)的示例。工具提示的宽度受限制,因此如果句子太宽,它将自动换行。

<!-- Button would need some properties to make it clickable.-->
<Button>
   <Button.ToolTip>
      <TextBlock Text="Line 1&#x0a;Line 2" MaxWidth="300" TextWrapping="Wrap"/>
    </Button.ToolTip>
</Button>

在VS2019 + .NET 4.6.1 + WPF上测试。


1
<Label xml:space="preserve">text content
another line</Label>

似乎也可以

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.