13

如何以编程方式将带有换行符的文本添加到文本块?

如果我插入这样的文本:

helpBlock.Text = "Here is some text. <LineBreak/> Here is <LineBreak/> some <LineBreak/> more.";

然后换行符被解释为字符串文字的一部分。我希望它更像是如果我在 XAML 中拥有它会发生什么。

我似乎也无法以 WPF 方式做到这一点:

helpBlock.Inlines.Add("Here is some content.");

由于 Add() 方法想要接受“内联”类型的对象。

我无法创建内联对象并将其作为参数传递,因为它“由于其保护级别而无法访问:

helpBlock.Inlines.Add(new Windows.UI.Xaml.Documents.Inline("More text"));

我没有看到以编程方式添加运行的方法。

我可以找到很多这样的 WPF 示例,但对于 WinRT 却没有。

我还发现了很多 XAML 示例,但没有来自 C#。

4

5 回答 5

19

你可以只传入换行符\n而不是<LineBreak/>

helpBlock.Text = "Here is some text. \n Here is \n some \n more.";

或者在 Xaml 中,您将使用Hex换行符的值

 <TextBlock Text="Here is some text. &#x0a; Here is &#x0a; some &#x0a; more."/>

两个结果:

在此处输入图像描述

于 2013-03-23T02:36:35.370 回答
9

使用 Enviroment.NewLine

testText.Text = "Testing 123" + Environment.NewLine + "Testing ABC";

StringBuilder builder = new StringBuilder();
builder.Append(Environment.NewLine);
builder.Append("Test Text");
builder.Append(Environment.NewLine);
builder.Append("Test 2 Text");
testText.Text += builder.ToString();
于 2013-03-23T01:43:26.653 回答
1

\n您可以以<LineBreak/>编程方式转换为。

    string text = "This is a line.\nThis is another line.";
    IList<string> lines = text.Split(new string[] { @"\n" }, StringSplitOptions.None);

    TextBlock tb = new TextBlock();
    foreach (string line in lines)
    {
        tb.Inlines.Add(line);
        tb.Inlines.Add(new LineBreak());
    }
于 2015-09-03T13:40:57.697 回答
1

解决方案:

我会使用“\n”而不是换行符。最好的方法是以这种方式使用它:

Resources.resx 文件:

myTextline: "Here is some text. \n Here is \n some \n more."

在你的课堂上:

helpBlock.Text = Resources.myTextline;

这看起来像:

在此处输入图像描述

其他解决方案是使用 Environment.NewLine 在此处构建您的字符串。

StringBuilder builder = new StringBuilder();
builder.Append(Environment.NewLine);
builder.Append(Resources.line1);
builder.Append(Environment.NewLine);
builder.Append(Resources.line2);
helpBlock.Text += builder.ToString();

或者在这里使用“\n”

StringBuilder builder = new StringBuilder();
builder.Append("\n");
builder.Append(Resources.line1);
builder.Append("\n");
builder.Append(Resources.line2);
helpBlock.Text += builder.ToString();
于 2015-09-03T13:52:53.760 回答
0

我有一个组件 XAML

<TextBlock x:Name="textLog" TextWrapping="Wrap" Background="#FFDEDEDE"/>

然后我通过字符串 + Environment.NewLine;

例子:

textLog.Inlines.Add("Inicio do processamento " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + Environment.NewLine);
textLog.Inlines.Add("-----------------------------------" + Environment.NewLine);

结果是

Inicio do processamento 19/08/2019 20:31:13
------------------------------------------------

于 2019-08-19T23:45:31.677 回答