107

How can I add a newline in the text of a label in WPF such as the following?

<Label>Lorem ipsum</Label> 

5 Answers 5

139

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

Sign up to request clarification or add additional context in comments.

2 Comments

Agreed this should be the accepted answer. It's more elegant and simpler to use.
This works fine if put straight into the XAML, but does not seem to work when put into a resource string - it just displays Lorem&#x0a;Ipsum in the label. As @stijn pointed out, this is what is required for localisation, but it doesn't work.
127
<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

2 Comments

When I tried the answer above, I got an error for having a tag in the middle of my content. Instead, I used this: <TextBlock> <Run>First</Run> <LineBreak/> <Run>Second</Run> </TextBlock>
This works great but is not useful when using localization. In that case use Lorem&#x0a;Ipsum
12

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"; 

Comments

4

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.

Comments

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

seems to work too

1 Comment

This does what the question asks, but one caveat is that it also preserves whitespace. So "nicely formatted" text in XAML will include all those indenting spaces, too.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.