Code:
Code:
PrintDocument doc = new PrintDocument();
BackupPage page = new BackupPage();
List<object>allItems = myGrid.ItemsSource.OfType<object>().ToList();
doc.Print("Backup Report");
doc.PrintPage += (s, ea) =>
{
int numberOfLinesAdded = 0;
while (lineIndex < allItems.Count)
{
page.SetHeaderAndFooterText(account.Text, start.Text, end.Text);
page.add_line(allItems[lineIndex]);
page.Measure(new Size(ea.PrintableArea.Width, double.PositiveInfinity));
if (page.DesiredSize.Height > ea.PrintableArea.Height && numberOfLinesAdded > 0)
{
page.remove_line(allItems[lineIndex]);
ea.HasMorePages = true;
break;
}
lineIndex++;
numberOfLinesAdded++;
}
ea.PageVisual = page;
};
Code:
Code:
public partial class BackupPage : UserControl
{
List<object> report = new List<object>();
public BackupPage()
{
InitializeComponent();
InvoiceDate.Text = DateTime.Today.ToShortDateString();
myGrid2.ItemsSource = report;
}
public void SetHeaderAndFooterText(string account_name, string start_date, string end_date)
{
account.Text = account_name;
end.Text = end_date;
start.Text = start_date;
}
public void remove_line(object item)
{
report.Remove(item);
}
internal void add_line(object item)
{
report.Add(item);
}
}
I can't think of any reason that this isn't working. Any help would be greatly appreciated.
