检测 FixedPage 上的内容是否超出底部边界
Detect if content on FixedPage exceeds bottom boundary
我正在创建一份文档,稍后要打印。本文档应包含一个网格,其中列出了 table 之类的项目,包括 header 行。项目的数量各不相同,因此网格可能会超出单个页面的底部边界。当发生这种情况时,我想在第二页继续,"table" header 应该再次出现在上面。我在 for-loop.
中以编程方式添加行
你知道如何检测是否超出底部页面边界的方法吗?也许有不同的方法。
解决方案是为每个 FixedPage 取一个 StackPanel 作为 "root child"。然后我可以添加内容并对其进行测量。
public StackPanel AddNewPage()
{
PageContent pC = new PageContent();
FixedPage fP = new FixedPage { Width = PageWidth, Height = PageHeight, Margin = Margin };
StackPanel sP = new StackPanel { Width = PageWidth - Margin.Left - Margin.Right };
fP.Children.Add(sP);
pC.Child = fP;
//FixedDocument
Document.Pages.Add(pC);
//used later to add content to the page
return sP;
}
public bool IsPageOverfilled(int pageIndex)
{
StackPanel sP = (Document.Pages[pageIndex].Child as FixedPage).Children[0] as StackPanel;
//necessary to recognize new added elements
sP.UpdateLayout();
sP.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
if (sP.DesiredSize.Height > MaxPageContentHeight)
return true;
else return false;
}
MaxPageContentHeight 定义如下:
double MaxPageContentHeight = PageHeight - Margin.Top - Margin.Bottom;
我正在创建一份文档,稍后要打印。本文档应包含一个网格,其中列出了 table 之类的项目,包括 header 行。项目的数量各不相同,因此网格可能会超出单个页面的底部边界。当发生这种情况时,我想在第二页继续,"table" header 应该再次出现在上面。我在 for-loop.
中以编程方式添加行你知道如何检测是否超出底部页面边界的方法吗?也许有不同的方法。
解决方案是为每个 FixedPage 取一个 StackPanel 作为 "root child"。然后我可以添加内容并对其进行测量。
public StackPanel AddNewPage()
{
PageContent pC = new PageContent();
FixedPage fP = new FixedPage { Width = PageWidth, Height = PageHeight, Margin = Margin };
StackPanel sP = new StackPanel { Width = PageWidth - Margin.Left - Margin.Right };
fP.Children.Add(sP);
pC.Child = fP;
//FixedDocument
Document.Pages.Add(pC);
//used later to add content to the page
return sP;
}
public bool IsPageOverfilled(int pageIndex)
{
StackPanel sP = (Document.Pages[pageIndex].Child as FixedPage).Children[0] as StackPanel;
//necessary to recognize new added elements
sP.UpdateLayout();
sP.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
if (sP.DesiredSize.Height > MaxPageContentHeight)
return true;
else return false;
}
MaxPageContentHeight 定义如下:
double MaxPageContentHeight = PageHeight - Margin.Top - Margin.Bottom;