使用PrintDialog打印WPF画面时,Grid.Arrange()方法导致打印结果不正确
三五月儿 2014-01-08 04:56:05 我需要打印WPF画面中一个Grid控件中的所有内容,由于画面可以放大和缩小。
所以在打印前,会根据Grid控件的大小与打印纸张之间的关系,设置Grid的大小和位置,用到以下方法:
grid.Measure(toSize);
grid.Arrange(new Rect(center, toSize));
其中:
grid:为Grid类型。
toSize:Grid根据打印纸张大小调整后的大小,为Size类型。
center:Grid根据打印纸张大小计算的起点坐标。
再调用以下方法进行打印:
printDlg.PrintVisual(grid, title);
其中:printDlg为PrintDialog类型;
title为字符串类型的标题。
出现问题:Win7下正常打印,Win8下打印的结果会有部分内容没有显示。
怀疑:因为MSDN上面说Arrange通常会异步执行,所以怀疑是还没等wpf界面调整好更新完就开始了打印导致此问题。不知道有没有高人知道解决方法。