2013-01-18 63 views

回答

2

如果你把裏面的TextBlock你的款/ RTB內InlineUIContainer它會被當作一個單一的元素,如果需要,將結轉到下一個頁面完整。這種方法可能有一些副作用,但我相信它應該進行打印工作。

0

畢竟我提出,將「推」那些在兩頁上破到下一個頁面的段落,我不看好這種解決方案非常滿意的方法,但我沒有找到另一種方式

public static void BreakBeforeLastParagraph(RichTextBlockOverflow rto) 
{ 
    if (!rto.HasOverflowContent) 
    return; 

    var pageBreak = rto.ContentEnd.Offset; 
    var brokenPar = rto.ContentSource.Blocks.FirstOrDefault(pr => pr.ElementStart.Offset <= pageBreak && pr.ElementEnd.Offset >= pageBreak); 
    if (brokenPar != null) 
    { 
    double spacerSize = pageBreak - brokenPar.ElementStart.Offset; 
    var spacer = new Paragraph(); 
    spacer.Margin = new Windows.UI.Xaml.Thickness(0,spacerSize, 0,0); 
    rto.ContentSource.Blocks.Insert(rto.ContentSource.Blocks.IndexOf(brokenPar), spacer); 
    } 
    rto.UpdateLayout();  
} 
+0

感謝您與解決方案跟進。我還是想知道如果有一個聲明的方式來告訴它來保持一個段落在一個頁面上。不過,我懷疑它。 –

+0

我是:)那將是非常不錯的功能,尤其是打印交易時 –