У меня простая проблема, но решение кажется сложным. Я хочу распечатать, используя холст управления 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 распечатки, то первое со значением txtTextBox.Text от 0, во второй раз он имеет значение 1?
Является ли 'PrintVisual' асинхронной функцией? MSDN не упоминает об этом. – Vlad
http://msdn.microsoft.com/en-us/library/system.windows.controls.printdialog.printvisual.aspx Печать - последняя команда, которая должна быть выполнена, поэтому она только «подбирает» последнюю итерацию это последнее, что нужно выполнить. Это нежелательно для моего приложения. Я попытался сыграть с классом DispatcherOperation, чтобы изменить приоритет, но это не помогло. – Dave
Ну, я не вижу информацию об асинхронном поведении в документации. Вы уверены, что это не ошибка? – Vlad