实现DocumentPaginator时的空白页面

时间:2011-10-19 16:57:15

标签: c# wpf xps xpsdocument 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);

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

1 个答案:

答案 0 :(得分:4)

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

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);
}