是否有一个流文档的选项,允许我在打印时拒绝分割块到2页

本文关键字:拒绝 打印 分割 2页 允许我 有一个 文档 选项 是否 | 更新日期: 2023-09-27 18:18:10

我正在尝试用c# 2010使用wpf的flowdocument制作一个小型标签打印机。

我生成这样的标签:

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。

现在我问你是否有可能防止标签被分割

是否有一个流文档的选项,允许我在打印时拒绝分割块到2页

是。你可以通过将"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);
}

您添加的最后一个换行符不再是必要的,因为段落之间自然有一个空格。您甚至可以考虑删除'price'行的最后一个换行字符。