Нова лінія в лейблі WPF?


83

Як я можу додати новий рядок до тексту мітки у WPF, наприклад, наступний?

<Label>Lorem 
  ipsum</Label>

Відповіді:


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


1
Коли я спробував відповідь вище, я отримав повідомлення про тег посеред вмісту. Натомість я використав це: <TextBlock> <Run>First</Run> <LineBreak/> <Run>Second</Run> </TextBlock>
Патоген

3
Це чудово працює, але не корисно при використанні локалізації. У цьому випадку використовуйтеLorem&#x0a;Ipsum
stijn

103

у WPF ви можете використовувати значення "&#10;"або"&#xA;"

Наприклад:

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

("10" - номер ASCII для нового рядка)

або

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

("A" - номер ASCII для нового рядка у шістнадцятковій формі)

Наприклад, із позначкою навколо межі для відображення межі


3
Погодився, що це має бути прийнятою відповіддю. Він більш елегантний і простіший у використанні.
Тайлер С,

10

Роблячи це у ViewModel або Model, я виявив, що використання Environment.NewLine має найбільш послідовний результат, включаючи локалізацію. Він також повинен працювати безпосередньо у поданні, але я цього не тестував.

Приклад:

На вигляд

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

У ViewModel:

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

2

Приклад того, як додати підказку з кількома рядками до елемента керування, наприклад кнопки. Підказка має обмежену ширину, тому вона обернеться, якщо речення буде занадто широким.

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

Перевірено на VS2019 + .NET 4.6.1 + WPF.


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

здається, це теж працює

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.