Wie kann ich in WPF eine neue Zeile in den Text eines Etiketts einfügen, z.
<Label>Lorem
ipsum</Label>
Antworten:
<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
Lorem
Ipsum
In WPF können Sie den Wert " "
oder verwenden"
"
Beispielsweise:
<Label Content="Lorem ipsum" />
("10" ist die ASCII-Nummer für Zeilenumbruch)
oder
<Label Content="Lorem
ipsum" />
("A" ist die ASCII-Nummer für Zeilenumbruch in Hex)
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";
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
Line 2" MaxWidth="300" TextWrapping="Wrap"/>
</Button.ToolTip>
</Button>
Getestet auf VS2019 + .NET 4.6.1 + WPF.
<TextBlock> <Run>First</Run> <LineBreak/> <Run>Second</Run> </TextBlock>