WPF 标签中的新行?

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

<Label>Lorem
ipsum</Label>
83666 次浏览
<Label><TextBlock>Lorem<LineBreak/>ipsum</TextBlock></Label>

You need to use TextBlock because TextBlock accepts as children a collection of Inline objects. So you are giving the TextBlock element three Inline items: Run Text="Lorem", LineBreak, and Run Text="ipsum".

You can't do the following:

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

because a label accepts one content child element.

Also, not sure exactly what your use case is but notice I placed a TextBlock inside your Label element. Is it repetitive? Not really, depending on your need. Here's a good article on the differences between the two elements: Difference between Label and TextBlock

in WPF you can use the value "&#10;" or "&#xA;"

For example:

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

("10" is the ASCII number for newline)

or

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

("A" is the ASCII number for newline in hex)

Example, with a border arround label to show boundry

When doing this in the ViewModel or Model, I have found that using Environment.NewLine has the most consistent outcome, including localization. It should work directly in the View as well, but I haven't tested that.

Example:

In the View

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

In the ViewModel:

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

An example of how to add a ToolTip with multiple lines to a control, such as a button. The tooltip is width limited so it will wrap if a sentence is too wide.

<!-- 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>

Tested on VS2019 + .NET 4.6.1 + WPF.

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

seems to work too