WPF Textblock, linebreak в атрибуте Text

Есть ли способ иметь \n сделать разрыв строки в TextBlock?

<TextBlock Text="line1\nLine2" />

Или есть лучший способ заставить средний разрыв строки внутри атрибута Text?

<LineBreak />

Это не работает для меня, это должно быть значение атрибута Text, потому что текстовая строка задается из внешнего источника.

Я знаком с LineBreak, но это не тот ответ, который я ищу.

Ответ 1

Я знаю, что это повторяет старый вопрос, но у меня была та же проблема. Решением для меня было использование кодированных строк в формате HTML (&amp;#10;).

Line1&amp;#10;Line2

Похож на

Line1
Line2

Для большего количества символов, закодированных в HTML, выполните w3schools

Ответ 2

Попробуйте следующее:

<TextBlock>
    line1
    <LineBreak />
    line2
</TextBlock>

Ответ 3

Самый простой способ -

<TextBlock> blabla <LineBreak /> coucou <LineBreak /> coucou 2 </TextBlock>

Итак, вы просто пишете XAML-код, а <LineBreak /> имеет то же значение, что и в HTML или "\n" на С#.

Ответ 5

Как разбить строку на два тега?

<StackPanel>
    <TextBlock Text="Line1" />
    <TextBlock Text="Line2" />
</StackPanel>

Ответ 6

< LineBreak/ > не будет работать, если он находится внутри коллекции, такой как Grid или StackPanel. В таких случаях будет работать, как показано:

LineBreak inside a collection

Ответ 7

Правильный способ использования может быть следующим:

<TextBlock>  
    <Span>text1</Span>  
    <LineBreak/>  
    <Span>text2</Span>  
</TextBlock>

Ответ 8

просто используйте элемент управления AccessText. вы можете использовать его как метку, и у вас есть свойство TextWrapping = "WrapWithOverflow"

например.

Моя так и работает нормально. Кроме того, у вас нет никаких проблем при изменении текста динамически.

Ответ 9

Я опаздываю на вечеринку, но.. это более или менее, как я это сделал (ум моих 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();
    }
}

Ответ 10

У меня была аналогичная проблема и я хотел связать String разметки xaml с TextBlock. Essentialy сохранение декларативной разметки внутри TextBlock в строке для последующего использования.

Вот как я сделал: я подклассифицировал TextBlock, чтобы сделать InlineCollection связным и написал конвертер между строкой и InlineCollection (или фактически общий список Inlines.)

Ответ 11

  <HyperlinkButton 
        Content="Apply and restart this pplication!&#10;&#13;Note that modifying these settings requires the application to be restarted."   />

CRLF простой способ = !&#10;&#13;

!&#10;&#13; - Работайте со всеми элементами управления wpf, xaml, silverlight, такими как TextBlock, HyperlinkText и многое другое.

Ответ 12

Если вы привязываете TextBlock Text, ни один из других ответов не работает. Просто добавьте '\n' в текст привязки туда, где вы хотите сломать.