Пустые страницы при реализации DocumentPaginator - PullRequest
0 голосов
/ 19 октября 2011

Я пытаюсь реализовать 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 Ответ

4 голосов
/ 24 октября 2011

Я отвечу на свой собственный камыш (снова):

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