WPF Textblock,Text属性中的换行符

时间:2009-05-07 22:22:34

标签: wpf textblock

有没有办法让\nTextBlock中换行?

<TextBlock Text="line1\nLine2" />

或者是否有更好的方法可以在Text属性中强制中间线中断?

<LineBreak />

这对我不起作用,它必须是Text属性的值,因为文本字符串是从外部源设置的。

我熟悉LineBreak,但这不是我正在寻找的答案。

15 个答案:

答案 0 :(得分:114)

试试这个:

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

答案 1 :(得分:108)

我知道这是在重新提出一个老问题,但我遇到了同样的问题。我的解决方案是使用HTML编码的换行符(&amp;#10;)。

Line1&amp;#10;Line2

看起来像

  

线路1
  LINE2

对于更多HTML编码字符,请查看w3schools

答案 2 :(得分:10)

最简单的方法是

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

所以你只需要编写XAML代码,而<LineBreak />与HTML中的含义或C#中的“\ n”完全相同。

答案 3 :(得分:7)

答案 4 :(得分:5)

如何将这条线分成两个标签?

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

答案 5 :(得分:3)

使用它的正确方法可能如下:

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

答案 6 :(得分:3)

&LT; LINEBREAK /&GT;如果它在Grid或StackPanel之类的集合中,则不起作用。 在这种情况下,如下所示:

LineBreak inside a collection

答案 7 :(得分:3)

对同一文本块中的多行有效的最佳方法是:

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

确保不要使用 TextWrapping="Wrap"。使用 TextWrapping="NoWrap" 或什么都不用。

答案 8 :(得分:2)

如果您绑定TextBlock的文本,其他答案都不起作用。只需将'\ n'添加到要中断的绑定文本即可。

答案 9 :(得分:1)

  <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等等

答案 10 :(得分:1)

只需使用AccessText控件即可。你可以像标签一样使用它,你有属性TextWrapping =“WrapWithOverflow”

例如。

我是这样的,它运作良好。另外,你在改变文本方面没有任何问题。

答案 11 :(得分:1)

我迟到了,但是...... 这或多或少都是我做的,(介意我的ItemSources是简单的字符串,没有格式化,我不需要&#39; convertBack&#39;任何东西)

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();
    }
}

答案 12 :(得分:0)

我遇到了类似的问题,想要将一个xaml标记字符串绑定到TextBlock。 Essentialy将声明性标记存储在字符串中的TextBlock中以供以后使用。

This is how I did:我将TextBlock子类化为使InlineCollection可绑定,并在字符串和InlineCollection(或实际上是Inlines的通用列表)之间编写了一个Converter。)

答案 13 :(得分:0)

这也可以正常工作:

<TextBlock>
    <Run Text="My nice text"/>
    <LineBreak/>
    <LineBreak/>
    <Run Text="After some linebreaks, I'm back!"/>
</TextBlock>

答案 14 :(得分:0)

当我使用绑定时,此&amp;#10;对我不起作用。但这有效:

$"first line {Environment.NewLine} second line"