[英]How can I insert a newline into a TextBlock without XAML?
我在代码中的Label
中创建了 WPF TextBlock
(在我的情况下无法使用 XAML),如下所示:
Label l = new Label();
TextBlock tb = new TextBlock();
l.Content = tb;
然后我遇到了需要设置包含新行的TextBlock
的.Text
属性的情况,例如:
tb.Text = "Hello\nWould you please just work?";
我尝试了各种换行符组合(回车、换行、回车加换行、换行加回车、双换行、双回车等)的多种编码(HTML 编码、ASCII 编码等)。
如果这是不可能的,请告诉我如何通过将任意输入String
中的每个换行符动态替换为LineBreak
object(或使其工作所需的任何内容)来以编程方式添加换行符。 输入String
将具有我无法提前预料到的任意(可读文本)内容,因为文本本身是动态的(用户定义的); 源字符串将具有换行符(又名 LF,又名\n
),但我可以轻松地将其替换为所需的任何内容。
此外,如果直接使用Label
而不是Label
中的TextBlock
更容易做到这一点,那也很好——我可以使用它。 我只需要一个带有自动纯文本换行的控件。
你有几个选择:
使用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?"));
只是另一个小笔记。 我遇到了类似的问题,并从资源文件中获取了字符串。 我注意到 .NET 将字符串“\r\n”传递为“\\r\\n”。 当我通过用正常的反斜杠替换双反斜杠来纠正这一点时,一切都按预期工作。
您可以将字符串值存储在“Resources.resw”中,并直接在代码中获取它们。 在 VS 资源编辑器本身中,无法将空行添加到字符串值。 为此,只需在任何文本编辑器中编辑值,添加所需数量的空行,然后“复制 - > 粘贴”到 Visual Studio 资源编辑器的值列。
例如:带有 2 个换行符的“Farewell”值: Goodbye\n\n保存更改? - 在文本编辑器中看起来像这样(实际上,需要复制到 VS):
再见
保存更改?
要获取 C# 代码中资源的字符串值,请根据您的应用程序调用以下行中的 1 行(UWP 或 WinUI3)。
UWP 代码:
Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView().GetString("Farewell");
WinUI3代码:
new ResourceLoader().GetString("Farewell");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.