gpt4 book ai didi

c# - 如何在没有 XAML 的情况下将换行符插入 TextBlock?

转载 作者:行者123 更新时间:2023-11-30 13:16:48 25 4
gpt4 key购买 nike

我在 Label in code 中创建了一个 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编码等)。恶心)。

  • 答案应绝对不包含 XAML
  • 答案应假设原始对象是使用 C# 代码创建的,不是XAML。
  • 答案不应提及 WPF 属性的绑定(bind)。没有使用绑定(bind)。正在设置“TextBlock”对象的“Text”属性。换行符必须插入那里

如果这是不可能的,请告诉我如何通过将任意输入 String 中的每个换行符动态替换为 LineBreak 对象(或其他任何对象)来以编程方式添加换行符需要让这个工作)。输入的 String 将包含我无法提前预料的任意(可读文本)内容,因为文本本身是动态的(用户定义的);源字符串将具有换行符(又名 LF,又名 \n),但我可以轻松地将其替换为所需的任何内容。

此外,如果直接使用 Label 而不是 Label 中的 TextBlock 更容易做到这一点,那也很好 - - 我可以用那个。我只需要一个带有自动纯文本换行的控件。

最佳答案

你有几个选择:

使用 Environment.NewLine 属性:

TextBlock tb = new TextBlock();
tb.Text = "Hello" + Environment.NewLine + "Would you please just work?";

或者,手动添加 RunLineBreakTextBlock:

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?"));

关于c# - 如何在没有 XAML 的情况下将换行符插入 TextBlock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24130980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com