我正在尝试使用来自wpf的flowdocument使用c#2010制作小型标签打印机。
我生成这样的标签:
FlowDocument doc = new FlowDocument();
Paragraph p = new Paragraph();
foreach (Labels label in labels)
{
p.Inlines.Add(label.name+"\n");
p.Inlines.Add(label.age + "\n");
p.Inlines.Add(label.price + "\n");
p.Inlines.Add( "\n");
doc.Blocks.Add(p);
}
它工作正常但是当生成更多标签然后适合一页时,标签就会分开。例如,该名称在Page1和年龄,价格在Page2上。
现在我问你是否有可能阻止标签被拆分。
答案 0 :(得分:6)
是。您可以通过将“KeepTogether”属性设置为True(默认为False)来指定不应跨页或列拆分“段落”。唯一需要注意的是,如果“段落”没有足够的空间存在于一个页面上,那么为了显示内容,将忽略“KeepTogether”属性。为了在您的示例中工作,每个标签都需要是它自己的段落,如下所示:
FlowDocument doc = new FlowDocument();
foreach (Labels label in labels)
{
Paragraph p = new Paragraph();
p.KeepTogether = true;
p.Inlines.Add(label.name + "\n");
p.Inlines.Add(label.age + "\n");
p.Inlines.Add(label.price + "\n");
doc.Blocks.Add(p);
}
您添加的最后一个换行符不再需要,因为段落之间自然存在空格。您甚至可以考虑删除“价格”行上的最后一个换行符。