Новая строка в WPF-метке?

Как добавить новую строку в текст метки в WPF, например следующее:

<Label>Lorem 
  ipsum</Label>

Ответ 1

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

Вам нужно использовать TextBlock, потому что TextBlock принимает в качестве дочерних элементов набор объектов Inline. Таким образом, вы предоставляете элементу TextBlock три элемента Inline: Run Text = "Lorem", LineBreak и Run Text = "ipsum".

Вы не можете сделать следующее:

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

потому что метка принимает один дочерний элемент контента.

Изменить: Кроме того, не уверен точно, что ваш вариант использования, но заметьте, я разместил TextBlock внутри вашего элемента Label. Он повторяется? Не совсем, в зависимости от ваших потребностей. Здесь хорошая статья о различиях между двумя элементами: Разница между Label и TextBlock

Ответ 2

в WPF вы можете использовать значение "&#10;" или "&#xA;"

Например:

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

( "10" - это номер ASCII для новой строки)

или

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

( "A" - это номер ASCII для новой строки в шестнадцатеричном формате)

Example, with a border arround label to show boundry

Ответ 3

Когда вы делаете это в ViewModel или Model, я обнаружил, что использование Environment.NewLine имеет самый последовательный результат, включая локализацию. Он также должен работать непосредственно в представлении, но я не тестировал это.

Пример:

В представлении

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

В ViewModel:

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