Как я могу добавить новую строку в текст метки в WPF, например следующий?
<Label>Lorem
ipsum</Label>
Ответы:
<Label><TextBlock>Lorem<LineBreak/>ipsum</TextBlock></Label>
Вам необходимо использовать TextBlock, потому что TextBlock принимает в качестве дочерних элементов коллекцию встроенных объектов. Итак, вы даете элементу TextBlock три встроенных элемента: Run Text = "Lorem", LineBreak и Run Text = "ipsum".
Вы не можете делать следующее:
<Label>Lorem<LineBreak/>ipsum</Label>`
потому что метка принимает один дочерний элемент содержимого.
Кроме того, не совсем уверен, каков ваш вариант использования, но обратите внимание, что я поместил TextBlock внутри вашего элемента Label. Это повторяется? Не совсем, в зависимости от ваших потребностей. Вот хорошая статья о различиях между двумя элементами: Разница между Label и TextBlock
Lorem
Ipsum
в WPF вы можете использовать значение " "
или"
"
Например:
<Label Content="Lorem ipsum" />
(«10» - это номер ASCII для новой строки)
или же
<Label Content="Lorem
ipsum" />
(«A» - это номер ASCII для новой строки в шестнадцатеричном формате)
Делая это в ViewModel или Model, я обнаружил, что использование Environment.NewLine дает наиболее последовательный результат, включая локализацию. Он также должен работать непосредственно в представлении, но я этого не тестировал.
Пример:
В представлении
<Label Content="{Binding SomeStringObject.ParameterName}" />
В ViewModel:
SomeStringObject.ParameterName = "First line" + Environment.NewLine + "Second line";
Пример того, как добавить всплывающую подсказку с несколькими строками к элементу управления, например к кнопке. Всплывающая подсказка ограничена по ширине, поэтому она будет переноситься, если предложение слишком широкое.
<!-- Button would need some properties to make it clickable.-->
<Button>
<Button.ToolTip>
<TextBlock Text="Line 1
Line 2" MaxWidth="300" TextWrapping="Wrap"/>
</Button.ToolTip>
</Button>
Протестировано на VS2019 + .NET 4.6.1 + WPF.
<TextBlock> <Run>First</Run> <LineBreak/> <Run>Second</Run> </TextBlock>