我在代码中TextBlock
内创建了一个WPF Label
(在我的情况下不可能是XAML),如下所示:
Label l = new Label();
TextBlock tb = new TextBlock();
l.Content = tb;
然后我遇到需要设置包含新行的.Text
TextBlock
属性的情况,例如:
tb.Text = "Hello\nWould you please just work?";
我尝试了各种换行组合的多种编码(HTML编码,ASCII编码等)(回车,换行,回车加换行,换行加回车,双换行,双回车等等)广告nauseum)。
如果这是不可能的,请告诉我如何以编程方式添加换行符,方法是将任意输入String
中的每个换行符动态替换为LineBreak
对象(或者使其工作所需的任何内容) 。输入String
将具有我无法预先预测的任意(可读文本)内容,因为文本本身是动态的(用户定义的);源字符串将具有换行符(也称为LF,又名\n
)但我可以轻松地将其替换为所需的内容。
此外,如果直接使用Label
而不是TextBlock
中的Label
更容易做到这一点,那也很好 - 我可以使用它。我只需要一个带有自动纯文本换行的控件。
答案 0 :(得分:12)
您有几个选择:
使用Environment.NewLine
属性:
TextBlock tb = new TextBlock();
tb.Text = "Hello" + Environment.NewLine + "Would you please just work?";
或者,手动将Run
和LineBreak
添加到TextBlock
:
TextBlock tb = new TextBlock();
tb.Inlines.Add(new Run("Hello"));
tb.Inlines.Add(new LineBreak());
tb.Inlines.Add(new Run("Would you please just work?"));
答案 1 :(得分:1)
只是另一个小记。我遇到了类似的问题并从资源文件中获取了字符串。我注意到的是.NET提供了字符串" \ r \ n" as" \\ r \\ n"。当我用正常的反斜杠替换双反斜杠时,一切按预期工作。