Печать средства просмотра прокрутки flowdocument на нескольких страницах

Я пытаюсь напечатать свой 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"));
}

Мой xaml выглядит так:

<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>

Дело в том, что он печатает все мои данные на 1 странице, ширина в порядке (я мог бы добавить поле, но это нормально), но сжимает все мои элементы управления, чтобы уместить их на одной странице по высоте.

Как это исправить? Я просто хотел бы отключить эту Авто Высота и сохранить исходный размер.

1 ответ

Решение

Проблема в том, что вы помещаете все в один BlockUIContainer. DocumentPaginator имеет проблемы с разбиением на страницы BlockUIContainer, то есть разбивает его на несколько страниц. Если ваш пользовательский интерфейс статичен, вы можете использовать несколько BlockUIContainers для упаковки вашего пользовательского интерфейса. т.е.

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

Это создаст несколько страниц. Также вам нужно будет установить FlowDocument.PageHeight перед печатью.

Другие вопросы по тегам