2013-08-31 2 views
2

Text/Textbox/combobox가 많고 페이지 높이가 높아질 수 있으므로 FlowDocument (FlowDocumentScrollViewer에 래핑 됨)를 인쇄하려고합니다!여러 페이지에 flowdocument 스크롤 뷰어 인쇄하기

나는 이것을 사용하고 있습니다 :

<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 페이지에 내 모든 데이터를 인쇄 (내가 추가 할 수 있습니다 같은

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 보인다 약간의 마진이지만 괜찮습니다.)하지만 높이가 한 페이지에 맞도록 모든 컨트롤을 압축합니다.

해결 방법? 난이 자동 높이를 비활성화하고 원래 크기를 유지하고 싶을뿐입니다.

+0

DocumentPaginator에는 어떤 페이지 크기가 표시됩니까? – Nitin

+0

PAGECOUNT : 0, IsPageCountValid : 거짓, 페이지 크기 = {816, 1016} 감사 – user2088807

+0

난에 "computePageCount"을 시도했지만 아무것도 변경되지 않습니다, 그것은 더 잘 보이 0 대신 – user2088807

답변

3

문제는 모든 것을 BlockUIContainer 안에 넣는 것이 문제입니다. DocumentPaginator는 BlockUIContainer를 페이지 매김하는 데 문제가 있습니다. 즉, 여러 페이지로 분할하는 데 문제가 있습니다. UI가 정적 인 경우 여러 BlockUIContainers를 사용하여 UI를 래핑 할 수 있습니다. 즉

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

이렇게하면 여러 페이지가 생성됩니다. 또한 인쇄하기 전에 FlowDocument.PageHeight를 설정해야합니다.

+0

는 감사의 한 페이지를 계산 ! 그러나 몇 가지 문제가 있습니다. - 내 항목을 2 열로 인쇄합니다. - blockUIContainer는 둘 이상의 페이지를 사용할 수 없습니까? 이 작은 부분이 다른 페이지에 있다면 더 좋을 것입니다. - 인쇄를 마쳤 으면 내 응용 프로그램에서 내 창의 showdialog에 "널 포인터 예외"를 표시합니다. 어떻게 피할 수 있습니까? 감사합니다 – user2088807

+0

(고정 된 열 속성, 그냥 null 예외가 있습니다. 아마도 새 Objet 내 FlowDocumentScrollViewer 복사해야 할 수도 있습니다?하지만 어떻게 그럴 수 있습니까? – user2088807

+0

그것은 당신을 위해 일해서 다행 ... 어디에 예외 .. 몇 가지 코드를 공유 할 수 있습니까? – Nitin