102

有没有办法在\na 中换行TextBlock

<TextBlock Text="line1\nLine2" />

Text或者有没有更好的方法在属性内强制中间换行?

<LineBreak />

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

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

4

16 回答 16

134

试试这个:

<TextBlock>
    line1
    <LineBreak />
    line2
</TextBlock>
于 2009-05-07T22:24:04.870 回答
121

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

Line1&amp;#10;Line2

好像

线1 线
2

有关更多 HTML 编码字符,请查看w3schools

于 2009-10-28T16:05:43.980 回答
11

最简单的方法是

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

因此,您只需编写 XAML 代码,在 HTML 中或 C# 中的“\n”<LineBreak />具有完全相同的含义。

于 2013-01-09T03:33:54.473 回答
8

<LineBreak/>

http://www.longhorncorner.com/UploadFile/mahesh/XamlLineBreak06092005152257PM/XamlLineBreak.aspx

于 2009-05-07T22:23:40.660 回答
7

<LineBreak/> 如果它位于 Grid 或 StackPanel 等集合中,它将不起作用。在这种情况下,如下所示将起作用:

集合内的换行符

于 2014-05-29T22:12:59.967 回答
6

将行分成两个标签怎么样?

<StackPanel>
    <TextBlock Text="Line1" />
    <TextBlock Text="Line2" />
</StackPanel>
于 2009-05-08T00:13:23.907 回答
6

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

<TextBlock>  
    <Span>text1</Span>  
    <LineBreak/>  
    <Span>text2</Span>  
</TextBlock>
于 2012-04-10T14:15:46.370 回答
5
  <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 等

于 2012-08-31T08:24:43.700 回答
5

对我来说在同一个文本块中处理多行的最佳方法是:

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

确保不使用 TextWrapping="Wrap"。使用 TextWrapping="NoWrap" 或不使用任何内容。

于 2021-01-13T22:35:17.143 回答
4

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

于 2013-03-10T20:43:20.907 回答
3

我迟到了,但是..这或多或少是我做的,(请注意我的 ItemSources 是纯字符串,没有格式化,我不需要'convertBack'任何东西)

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();
    }
}
于 2014-03-26T06:46:44.630 回答
3

这也可以正常工作:

<TextBlock>
    <Run Text="My nice text"/>
    <LineBreak/>
    <LineBreak/>
    <Run Text="After some linebreaks, I'm back!"/>
</TextBlock>
于 2019-02-08T14:38:36.050 回答
3

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

$"first line {Environment.NewLine} second line"
于 2020-06-25T15:34:37.807 回答
2

只需使用 AccessText 控件。您可以像使用标签一样使用它,并且您拥有 TextWrapping="WrapWithOverflow" 属性

例如。

我的就是这样,而且工作正常。此外,您在动态更改文本方面没有任何问题。

于 2012-12-04T12:58:53.917 回答
1

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

我就是这样做的:我将 TextBlock 子类化以使 InlineCollection 可绑定,并在字符串和 InlineCollection 之间编写了一个转换器(或者实际上是一个通用的内联列表。)

于 2011-04-08T09:23:30.347 回答
1

这也很好用。

使用这种方法,我们可以根据需要修改每一行中的文本属性。

<TextBlock>
    <StackPanel>
        <TextBlock FontSize="12" FontWeight="Bold" >My Text One</TextBlock>
        <TextBlock FontFamily="Times New Roman" FontStyle="Italic">
            - My Text Two
        </TextBlock>
    </StackPanel>
</TextBlock>
于 2021-09-27T05:24:15.187 回答