WPF文本块,文本属性中的换行符

有没有办法让\nTextBlock换行?

 <TextBlock Text="line1\nLine2" /> 

还是有一个更好的方法来强制在Text属性中的中间行rest?

 <LineBreak /> 

这对我不起作用,它需要是Text属性的值,因为文本string是从外部源设置的。

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

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

 Line1&amp;#10;Line2 

好像

1号线
2号线

对于更多的HTML编码字符检查w3schools

尝试这个:

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

最简单的方法是

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

所以你只需编写XAML代码,和<LineBreak />具有完全一样的含义
在HTML中或在C#中的“\ n”。

如何将行分成两个标签?

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

如果它在Grid或StackPanel等集合内,<LineBreak />将不起作用。 在这种情况下,下面的工作将如图所示:

LineBreak集合中

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

例如。

矿是这样的,它工作正常。 另外,您在改变文本方面没有任何问题。

我迟到了,但是..这或多或less是我做的,(介意我的ItemSources是纯string,没有格式化,我不需要任何“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(); } } 

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

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

我有一个类似的问题,并希望绑定一个XAML标记的string到一个TextBlock。 Essentialy将声明标记存储在TextBlock中的string中供以后使用。

这是我做了 :我subclassed TextBlock使InlineCollection可绑定,并写了一个转换器之间的string和InlineCollection(或实际上是一个通用的Inline列表)。

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

如果您正在绑定TextBlock的文本,其他答案都不起作用。 只需将“\ n”添加到要破解的位置即可。