爲了記錄,這一直在等待,直到我允許我回答我自己的問題。我不能說我同意這個'邏輯'。
好吧,我設法或多或少的想出了一些東西,至少現在。我仍然打印使用視覺效果,因爲它允許我使用我已經使用過的相同的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