Czy istnieje sposób na \n
zrobienie podziału wiersza w TextBlock
?
<TextBlock Text="line1\nLine2" />
A może jest lepszy sposób na wymuszenie złamania środkowej linii wewnątrz Text
atrybutu?
<LineBreak />
U mnie to nie działa, musi to być wartość Text
atrybutu, ponieważ ciąg tekstowy jest ustawiany z zewnętrznego źródła.
Znam, LineBreak
ale to nie jest odpowiedź, której szukam.
Odpowiedzi:
Wiem, że to przywraca stare pytanie, ale miałem ten sam problem. Rozwiązaniem dla mnie było użycie źródeł wiersza zakodowanych w formacie HTML (
&#10;
).Line1&#10;Line2
Wygląda jak
Aby uzyskać więcej znaków zakodowanych w HTML, sprawdź w3schools
źródło
<TextBlock>
a</TextBlock>
potem, tak, będziesz potrzebować<LineBreak/>
.
działa wewnątrzText
atrybutu:<TextBlock Text="..." />
Spróbuj tego:
<TextBlock> line1 <LineBreak /> line2 </TextBlock>
źródło
Najłatwiej jest
<TextBlock> blabla <LineBreak /> coucou <LineBreak /> coucou 2 </TextBlock>
Więc po prostu piszesz kod XAML i
<LineBreak />
ma dokładnie to samo znaczeniew HTML lub „\ n” w C #.
źródło
<LineBreak/>
http://www.longhorncorner.com/UploadFile/mahesh/XamlLineBreak06092005152257PM/XamlLineBreak.aspx
źródło
Co powiesz na rozbicie wiersza na dwa tagi?
<StackPanel> <TextBlock Text="Line1" /> <TextBlock Text="Line2" /> </StackPanel>
źródło
<LineBreak /> nie będzie działać, jeśli znajduje się wewnątrz kolekcji, takiej jak Grid lub StackPanel. W takich przypadkach działałyby następujące elementy:
źródło
Prawidłowy sposób użycia może być następujący:
<TextBlock> <Span>text1</Span> <LineBreak/> <Span>text2</Span> </TextBlock>
źródło
<HyperlinkButton Content="Apply and restart this pplication! Note that modifying these settings requires the application to be restarted." />
Prosty sposób CRLF =
!
!
- Pracuj nad wszystkimi kontrolkami wpf, xaml, silverlight, takimi jak TextBlock, HyperlinkText i nie tylkoźródło
Jeśli wiążesz tekst TextBlock, żadna z pozostałych odpowiedzi nie działa. Po prostu dodaj „\ n” do wiążącego tekstu w miejscu, w którym chcesz przerwać.
źródło
To również działa dobrze:
<TextBlock> <Run Text="My nice text"/> <LineBreak/> <LineBreak/> <Run Text="After some linebreaks, I'm back!"/> </TextBlock>
źródło
po prostu użyj kontrolki AccessText. możesz użyć go jak etykiety i masz właściwość TextWrapping = "WrapWithOverflow"
na przykład.
Mój jest taki i działa dobrze. Ponadto nie masz żadnych problemów z dynamiczną zmianą tekstu.
źródło
Spóźniłem się na imprezę, ale… tak mniej więcej tak to zrobiłem (pamiętaj, że moje ItemSources to zwykłe ciągi znaków, nie sformatowane i nie musiałem niczego „konwertować”)
public class SpaceToLineBreakConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return (!String.IsNullOrEmpty(value as string)) ? new Regex(@"\s").Replace(value as string, "\n") : value; } public object ConvertBack(object value, Type targetType, object parameter,System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } }
źródło
Miałem podobny problem i chciałem powiązać ciąg znaczników XAML z TextBlock. Niezbędne do przechowywania deklaratywnego znacznika wewnątrz TextBlock w ciągu do późniejszego użycia.
Oto, jak to zrobiłem : podklasowałem TextBlock, aby umożliwić powiązanie InlineCollection i napisałem Converter między ciągiem a InlineCollection (lub właściwie ogólną listą Inlines.)
źródło
to
&#10;
nie zadziałało dla mnie, kiedy użyłem wiązania. Ale to działa:$"first line {Environment.NewLine} second line"
źródło