WPF Textblock, linebreak в текстовом атрибуте


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

<TextBlock Text="line1nLine2" />

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

<LineBreak />

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

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

12 77

12 ответов:

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

Line1&amp;#10;Line2

выглядит так:

Line1
Строка2

для более HTML-кодированных символов проверьте w3schools

попробуйте это:

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

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

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

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

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

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

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

LineBreak inside a collection

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

<TextBlock>  
    <Span>text1</Span>  
    <LineBreak/>  
    <Span>text2</Span>  
</TextBlock>
  <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 и многое другое

просто используйте элемент управления 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(или на самом деле общий список строк.)