我有一个简单的问题,但解决方案似乎很棘手。我想在循环中使用WPF控件画布进行打印;但是对于每次迭代,我想要画布控件。WPF - 循环打印
如果我想打印在WPF画布控制,我可以简单地调用
PrintDialog dialog = new PrintDialog();
dialog.PrintVisual(this.canvas, "");
它打印效果与预期到我的默认打印机。精彩。
但是,如果我想在循环中多次执行此操作并在每次迭代过程中对画布进行更新,则只会打印循环的最终迭代。
private void methodName()
{
for (int i = 0; i < 2; i++)
{
updateTextBox(i.ToString());
PrintDialog dialog = new PrintDialog();
dialog.PrintVisual(this.canvas, "");
}
}
private void updateTextBox(string text)
{
txtTextBox.Text = text;
}
任何想法,我需要做什么来确保我得到2个打印输出时,先用0 txtTextBox.Text值,它的值为1,第二次?
PrintVisual是一个异步函数吗? MSDN没有提到它。 – Vlad
http://msdn.microsoft.com/en-us/library/system.windows.controls.printdialog.printvisual.aspx print是要执行的最后一个命令,因此它只是'拾取'最终的迭代,因为是最后要做的事情。这对我的应用程序来说并不合适。我曾尝试使用DispatcherOperation类来改变优先级,但这没有帮助。 – Dave
好吧,我无法在文档中看到有关异步行为的信息。你确定这不是一个错误? – Vlad