实现DocumentPaginator时的空白页面

我正在尝试像这样实现一个Paginator:

public class MyPaginator : DocumentPaginator{ // ommitting details... public override DocumentPage GetPage(int pageNumber) { DocumentPage page = new DocumentPage(canvas); return page; } } 

它编译,运行,但页面是空白(白色)。 ‘canvas’是System.Windows.Controls.Canvas的一个实例。

当我把它放在像ScrollViewer这样的屏幕容器中时,它可以完美呈现。

 XpsDocument _xpsDocument = CreateXpsDoc(myPaginatorInstance); 

唯一有效的是页面的大小设置为canvas的大小。 我错过了什么?

我会回答我自己的风滚草(再次):

 public override DocumentPage GetPage(int pageNumber) { Canvas container = new Canvas(); container.Children.Add(canvas); double scaleX = pageSize.Width / canvas.Width; double scaleY = pageSize.Height / canvas.Height; container.RenderTransform = new ScaleTransform(scaleX, scaleY); container.Width = PageSize.Width; container.Height = PageSize.Height; container.Measure(PageSize); container.Arrange(new Rect(new Point(0, 0), PageSize)); Rect contentBox = new Rect(PageSize); return new DocumentPage(container, PageSize, contentBox, contentBox); }