是否有一个flowdocument选项允许我在打印时拒绝将块拆分为2页?

时间:2011-12-16 19:44:23

标签: c# wpf printing flowdocument

我正在尝试使用来自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上。

现在我问你是否有可能阻止标签被拆分。

1 个答案:

答案 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);
}

您添加的最后一个换行符不再需要,因为段落之间自然存在空格。您甚至可以考虑删除“价格”行上的最后一个换行符。