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

W0b*_*ble 2 c# printing wpf 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);
        }
Run Code Online (Sandbox Code Playgroud)

它工作正常但是当生成更多标签然后适合一页时,标签就会分开.例如,该名称在Page1和年龄,价格在Page2上.

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

Sco*_*ott 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);
}
Run Code Online (Sandbox Code Playgroud)

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