我有一个ScrollViewer和非常“长”的内容在其中。我编写了一个继承自DocumentPaginator的类,但我不明白如何为这个Visual的每个部分创建一个“框架”?我的意思是,我怎么“看”下一页的控件?我试过,但没有成功:
public override DocumentPage GetPage(int pageNumber)
{
double left = pageNumber * pageSize.Width;
Point pt = new Point(left, 0);
visual.RenderTransform = Transform.Identity;
visual.RenderTransform = new TranslateTransform(-left, 0);
visual.Measure(pageSize);
visual.Arrange(new Rect(visual.DesiredSize));
DocumentPage page = new DocumentPage(visual);
return page;
}通过这段代码,我得到了第一页,第二页和第一页完全一样,其余的页面都是空白的。
发布于 2011-02-25 09:38:27
DocumentPaginator是相当棘手的。以下是帮助我正确估计页面大小并确保不出现空白页的几个步骤:
将两个属性IsPageCountValid和PageCount重写为:
public override bool IsPageCountValid { get { return true; } }
和
public override int PageCount
{
get
{
if (pageCount == 0)
{
this.ComputePageCount();
}
return pageCount;
}
}使用私有函数ComputePageCount进行页面大小计算(根据指定的单个pageSize将页面分解为确切的页数)。
此处设置的所有页计数计算功能的键
IsPageCountValid= true
然后,它将始终确保分页器使用覆盖方法计算页数。
可以通过设置DocumentPaginator.PageSize属性指定单个页大小。
考虑每一页中的所有页眉/页脚。大部分空白/较少的页面是错误的PageCount计算的结果。
https://stackoverflow.com/questions/3726995
复制相似问题