Я пытаюсь распечатать документ wpf. Я использую documentpaginator для разбивки на страницы и пользовательский элемент управления для создания фактического визуального для печати. Мой пользовательский элемент управления имеет несколько текстовых полей и привязку данных к объектам данных, которые передаются пользовательскому элементу управления во время выполнения.
Теперь код отлично работает при печати в документе XPS, но когда он печатает на физическом принтере, мой datagrid печатается пустым, хотя другие текстовые поля прекрасно печатаются.
Ниже приведен код класса GetPage класса paginator:
SaleOrderPage page = new SaleOrderPage(order, pageNumber, controlSize);
page.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
page.Arrange(new Rect(new Point(0, 0), PageSize));
page.InitPrint();
page.UpdateLayout();
return new DocumentPage(page);
Метод InitPrint инициализирует мой datagrid и привязывает его к источнику данных. Вот код для метода InitPrint.
public void InitPrint() {
var sales = ctx.SalesOrders.Where(so => so.Id.Equals(order.Id)).First().Sales.Skip(pageNumber * PageRows).Take(PageRows);
var printData = sales.Select(x => new {
Particulars = string.Format("{0} - {1}", x.Item.Brand.Name, x.Item.Shade.Name),
Quantity = string.Format("{0} {1}", x.Quantity, x.Item.Brand.Unit.Symbol)
}).ToList();
dgSales.ItemsSource = printData;
dgSalesCopy.ItemsSource = printData;
}
Я считаю, что я пропускаю какой-то шаг при печати на фактический принтер, потому что он работает, как ожидается, на XPS-принтере, но не на физическом принтере.
Спасибо за чтение вопроса,
Нэвин