RichTextBlock在循环中添加新块
本文关键字:添加 新块 循环 RichTextBlock | 更新日期: 2023-09-27 17:58:19
我想在RichTextBlock
中添加一个新的普通Run
,如果单词不匹配,如果匹配,文本应该是粗体:
if (InnerTextofCell == "TEXT")
{
rtb2.Blocks.Add(new Paragraph (new Run { FontWeight = FontWeights.Bold, Text = innerTextOfCell }));
}
else
{
rtb2.Blocks.Add(new Paragraph (new Run { Text = innerTextOfCell }));
}
我唯一的问题是,Paragraph
没有一个包含1个参数的构造函数。
有人有解决方案吗?而且它在foreach
循环中,所以它经常重复。
如果查看一个Paragraph
对象,您会注意到Inlines
属性(向其中添加运行)是只读的。所以你不能在构造函数中添加这些。一种可能的解决方案如下:
var paragraph = new Paragraph();
var run = new Run { Text = innerTextOfCell };
if (InnerTextofCell == "TEXT")
{
run.FontWeight = FontWeights.Bold;
}
paragraph.Inlines.Add(run);
rtb2.Blocks.Add(paragraph);
创建Paragraph
和Run
对象,检查文本是否必须为粗体,然后将它们添加到RichTextBlock
中。
由于您谈论的是foreach
循环,因此您甚至可以根据所追求的设计(单行上的文本或堆叠在多行上的文本)重用Paragraph
对象。您的代码将类似于:
var paragraph = new Paragraph();
foreach(...)
{
var run = new Run { Text = innerTextOfCell };
if (InnerTextofCell == "TEXT")
{
run.FontWeight = FontWeights.Bold;
}
}
paragraph.Inlines.Add(run);
rtb2.Blocks.Add(paragraph);
我认为你可以简单地这样做来解决你的问题:
if (InnerTextofCell == "TEXT")
{
rtb2.Blocks.Add(new Paragraph (new Run { FontWeight = FontWeights.Bold, Text = innerTextOfCell }));
}
else
{
rtb2.Blocks.Add(new Paragraph (new Run { FontWeight = FontWeights.Normal, Text = innerTextOfCell }));
}