Я пытаюсь распечатать wpf документ. Я использую documentpaginator для разбиения на страницы и пользовательского элемента управления для создания фактический визуальный для печати. Мой пользовательский элемент управления имеет немного текстовых полей и datagrid, связанный с объектами данных, которые передаются пользовательскому элементу управления во времени выполнения.
Теперь код работает отлично при печати к документу XPS, но когда он печатает к физическому принтеру, мой datagrid печатается пустой, хотя другие текстовые поля печатают отлично.
Ниже код для paginator класса Метод GetPage:
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, но не к физическому принтеру.
Спасибо за чтение вопроса,
Naveen