Newline in a WPF-label?

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

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

seems to work too