带有换行符的程序化文本块条目

时间:2013-03-23 01:34:08

标签: c# windows-store-apps winrt-xaml

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

如果我插入这样的文字:

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

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

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

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

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

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

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

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

我可以找到大量的WPF示例,但WinRT没有。

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

5 个答案:

答案 0 :(得分:17)

您只需传递换行符\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."/>

两个结果:

enter image description here

答案 1 :(得分:5)

使用Environment.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();

答案 2 :(得分: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());
    }

答案 3 :(得分:0)

解决方案:

我会使用&#34; \ n&#34;而不是换行。最好的办法是以这种方式使用它:

Resources.resx文件:

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

在你的课堂上:

helpBlock.Text = Resources.myTextline;

这看起来像是:

enter image description here

其他解决方案是使用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();

或者在这里使用&#34; \ n&#34;

StringBuilder builder = new StringBuilder();
builder.Append("\n");
builder.Append(Resources.line1);
builder.Append("\n");
builder.Append(Resources.line2);
helpBlock.Text += builder.ToString();

答案 4 :(得分: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);

结果是

处理流程19/08/2019 20:31:13
-----------------------------------