2

我正在尝试打印我的 FlowDocument(包装在 FlowDocumentScrollViewer 中),因为我有很多文本/文本框/组合框,并且页面高度可能会变高!

我正在使用这个:

PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
    Scrollvvv.Document.ColumnWidth = printDialog.PrintableAreaWidth;
    Scrollvvv.Document.ColumnGap = 0;
    printDialog.PrintDocument(((IDocumentPaginatorSource)Scrollvvv.Document).DocumentPaginator, ServicesLangue.RM.GetString("TITRE_MODIFIER_SALON_EXPOSANT"));
}

我的 xml 看起来像:

<FlowDocumentScrollViewer Name="Scrollvvv" VerticalScrollBarVisibility="Auto">
    <FlowDocument Name="flowDoc" PagePadding="10">
        <Section>
            <BlockUIContainer>
                <Grid Name="grid_principale">
                    <!-- Lot of stuffs here -->
                </Grid>
            </BlockUIContainer>
        </Section>
    </FlowDocument>
</FlowDocumentScrollViewer>

问题是:它将我的所有数据打印在一页中,宽度还可以(我可能会添加一些边距,但这没关系),但它会压缩我的所有控件以适应一页的高度。

如何解决这个问题?我只想禁用此自动高度并保持原始大小。

4

1 回答 1

4

问题是您将所有内容都放在单个 BlockUIContainer 中。DocumentPaginator 在对 BlockUIContainer 进行分页时遇到问题,即将其拆分为多个页面。如果你的 UI 是静态的,你可以使用多个 BlockUIContainers 来包装你的 UI。IE

    <BlockUIContainer>
      <Grid Name="grid_principale">
       <!-- Grid content here -->
      </Grid>
    </BlockUIContainer>
    <BlockUIContainer>
      <Grid Name="grid_principale2">
       <!-- Grid content here -->
      </Grid>
    </BlockUIContainer>

这将生成多个页面。此外,您还必须在打印前设置 FlowDocument.PageHeight。

于 2013-09-01T10:45:26.913 回答