Jak mogę dodać nowy wiersz w tekście etykiety w WPF, na przykład następujący?
<Label>Lorem
ipsum</Label>
<Label><TextBlock>Lorem<LineBreak/>ipsum</TextBlock></Label>
Musisz użyć TextBlock, ponieważ TextBlock akceptuje jako elementy podrzędne kolekcję obiektów Inline. Więc dajesz elementowi TextBlock trzy elementy Inline: Run Text = "Lorem", LineBreak i Run Text = "ipsum".
Nie możesz wykonać następujących czynności:
<Label>Lorem<LineBreak/>ipsum</Label>`
ponieważ etykieta akceptuje jeden element podrzędny treści.
Nie jestem też pewien, jaki jest twój przypadek użycia, ale zauważ, że umieściłem TextBlock wewnątrz elementu Label. Czy to się powtarza? Niezupełnie, w zależności od twoich potrzeb. Oto dobry artykuł na temat różnic między tymi dwoma elementami: różnica między Label i TextBlock
<TextBlock> <Run>First</Run> <LineBreak/> <Run>Second</Run> </TextBlock>
Lorem
Ipsum
w WPF można użyć wartości
" "
lub"
"
Na przykład:
<Label Content="Lorem ipsum" />
(„10” to numer ASCII nowej linii)
lub
<Label Content="Lorem
ipsum" />
(„A” to numer ASCII dla nowej linii w formacie szesnastkowym)
źródło
Robiąc to w ViewModel lub Model, odkryłem, że użycie Environment.NewLine daje najbardziej spójny wynik, w tym lokalizację. Powinien również działać bezpośrednio w Widoku, ale nie testowałem tego.
Przykład:
W widoku
<Label Content="{Binding SomeStringObject.ParameterName}" />
W ViewModel:
SomeStringObject.ParameterName = "First line" + Environment.NewLine + "Second line";
źródło
Przykład dodawania etykietki narzędzi z wieloma wierszami do kontrolki, takiej jak przycisk. Etykietka ma ograniczoną szerokość, więc zostanie zawinięta, jeśli zdanie jest zbyt szerokie.
<!-- 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>
Przetestowano na VS2019 + .NET 4.6.1 + WPF.
źródło
<Label xml:space="preserve">text content another line</Label>
wydaje się też działać
źródło