WPF Textblock, linebreak в текстовом атрибуте
есть ли способ, чтобы иметь n
сделать разрыв строки в TextBlock
?
<TextBlock Text="line1nLine2" />
или есть лучший способ заставить разрыв средней линии, внутри ?
<LineBreak />
это не работает для меня, это должно быть значение Text
атрибут, потому что текстовая строка устанавливается из внешнего источника.
Я знаком с LineBreak
но это не тот ответ, который я ищу.
12 ответов:
Я знаю, что это возрождение старого вопроса, но у меня была та же проблема. Решение для меня было использовать HTML-кодированные каналы строк (
&#10;
).Line1&#10;Line2
выглядит так:
Line1
Строка2для более HTML-кодированных символов проверьте w3schools
самый простой способ-это
<TextBlock> blabla <LineBreak /> coucou <LineBreak /> coucou 2 </TextBlock>
Так что вы просто пишете XAML код, и
<LineBreak />
имеет точно такое же значение
в HTML или "\n " в C#.
Как насчет разбиения строки на два тега?
<StackPanel> <TextBlock Text="Line1" /> <TextBlock Text="Line2" /> </StackPanel>
не будет работать, если он находится внутри коллекции, такой как Grid или StackPanel. В таких случаях будет работать, как показано ниже:
правильный способ его использования может быть следующим:
<TextBlock> <Span>text1</Span> <LineBreak/> <Span>text2</Span> </TextBlock>
<HyperlinkButton Content="Apply and restart this pplication! Note that modifying these settings requires the application to be restarted." />
CRLF простой способ =
!
!
- работа на всех WPF, xaml, silverlight элементы управления, такие как TextBlock, HyperlinkText и многое другое
просто используйте элемент управления AccessText. вы можете использовать его как метку, и у вас есть свойство TextWrapping="WrapWithOverflow"
например.
мой такой, и он работает нормально. Кроме того, у вас нет никаких проблем с динамическим изменением текста.
Если вы привязываете текст TextBlock, ни один из других ответов не работает. Просто добавьте '\n ' в текст привязки, где вы хотите сломать.
Я опаздываю на вечеринку, но ... . это более или менее так, как я это сделал, (имейте в виду, что мои ItemSources-это простые строки , а не форматированные, и мне не нужно было ничего "конвертировать")
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(); } }
У меня была аналогичная проблема, и я хотел привязать строку разметки xaml к текстовому блоку. По существу, хранение декларативной разметки внутри текстового блока в строке для последующего использования.
вот как я сделал: Я подкласс TextBlock, чтобы сделать InlineCollection bindable и написал конвертер между строкой и InlineCollection(или на самом деле общий список строк.)