为了记录,这一直在等待,直到我允许我回答我自己的问题。我不能说我同意这个'逻辑'。
好吧,我设法或多或少的想出了一些东西,至少现在。我仍然打印使用视觉效果,因为它允许我使用我已经使用过的相同的xaml代码。这并不完美,但我会分享我所拥有的。
首先,我已经收集了一些我想要打印的对象。这是为了测试目的,因为这将是并且应该是用户定义的集合。然后,我该集合传递给我的打印功能如下:
private void Print_Test()
{
PrintDialog dlg = new PrintDialog();
if (dlg.ShowDialog() == false) return;
int i = 1;
Size pageSize = new Size(dlg.PrintableAreaWidth, dlg.PrintableAreaHeight); //I found this Size object very important. Without it I only got an empty page
ReportPrintForm rf;
foreach (KeyValuePair<String, Report> kvp in ((App)Application.Current).Reports)
{
rf = new ReportPrintForm(kvp.Value);
rf.Measure(pageSize);
rf.Arrange(new Rect(0, 0, pageSize.Width, pageSize.Height));
dlg.PrintVisual(rf, "Job_" + i);
i++;
}
}
现在,我知道这是不是因为每种形式在其自己的工作打印的功能完善,但它是一个起点,以解决我的问题使用一个严格创建的“表单”打印出多个对象。这将在用户看不到它的情况下打印出该表单,如果我想为用户演示文稿使用一组样式,而为打印版本使用一组样式,则这样做很好。缺点是,至少现在,我必须手动设置字段(TextBoxes)的内容,并且不能依赖于DataContext字段。我不知道为什么,但同样,这只是稍后完成我的问题的起点。
我已经完成了自己对这个问题的回答,但是我必须等几个小时才能发布。我今晚一定要这么做。 – Greg