Newline in einem WPF-Label?


83

Wie kann ich in WPF eine neue Zeile in den Text eines Etiketts einfügen, z.

<Label>Lorem 
  ipsum</Label>

Antworten:


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

Sie müssen TextBlock verwenden, da TextBlock eine Sammlung von Inline-Objekten als untergeordnete Elemente akzeptiert. Sie geben dem TextBlock-Element also drei Inline-Elemente: Run Text = "Lorem", LineBreak und Run Text = "ipsum".

Sie können Folgendes nicht tun:

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

weil eine Beschriftung ein untergeordnetes Inhaltselement akzeptiert.

Ich bin mir auch nicht sicher, was genau Ihr Anwendungsfall ist, aber beachten Sie, dass ich einen TextBlock in Ihr Label-Element eingefügt habe. Ist es repetitiv? Nicht wirklich, je nach Bedarf. Hier ist ein guter Artikel über die Unterschiede zwischen den beiden Elementen: Unterschied zwischen Label und TextBlock


1
Als ich die obige Antwort ausprobierte, wurde die Fehlermeldung angezeigt, dass sich in der Mitte meines Inhalts ein Tag befindet. Stattdessen habe ich <TextBlock> <Run>First</Run> <LineBreak/> <Run>Second</Run> </TextBlock>
Pathogen

3
Dies funktioniert hervorragend, ist jedoch bei Verwendung der Lokalisierung nicht hilfreich. In diesem Fall verwendenLorem&#x0a;Ipsum
stijn

101

In WPF können Sie den Wert "&#10;"oder verwenden"&#xA;"

Beispielsweise:

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

("10" ist die ASCII-Nummer für Zeilenumbruch)

oder

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

("A" ist die ASCII-Nummer für Zeilenumbruch in Hex)

Beispiel mit einem Rahmen um die Beschriftung, um die Begrenzung anzuzeigen


2
Einverstanden sollte dies die akzeptierte Antwort sein. Es ist eleganter und einfacher zu bedienen.
Tyler C

10

Wenn ich dies im ViewModel oder Modell mache, habe ich festgestellt, dass die Verwendung von Environment.NewLine das konsistenteste Ergebnis erzielt, einschließlich der Lokalisierung. Es sollte auch direkt in der Ansicht funktionieren, aber das habe ich nicht getestet.

Beispiel:

In der Ansicht

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

Im ViewModel:

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

2

Ein Beispiel für das Hinzufügen einer QuickInfo mit mehreren Zeilen zu einem Steuerelement, z. B. einer Schaltfläche. Der Tooltip ist in der Breite begrenzt, sodass er umgebrochen wird, wenn ein Satz zu breit ist.

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

Getestet auf VS2019 + .NET 4.6.1 + WPF.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.