Печать средства просмотра прокрутки 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 перед печатью.