Почему Silverlight работает бесконечный цикл при печати документа длиннее 1 страницы?.HasMorePages = true - PullRequest
1 голос
/ 09 сентября 2010

Мой первый вопрос здесь по stackoverflow. Я пытаюсь напечатать длинную сетку, которая была сгенерирована динамически.

pdoc.PrintPage += (p, args) =>
        {
            args.PageVisual = myGrid;
            args.HasMorePages = false;
        };

Когда я использую args.HasMorePages = false;, он печатает первую страницу сетки, как и должно (хотя это занимает некоторое время, так как он отправляет большой растровый рисунок 123 МБ на плохой принтер - спасибо за реализацию функции печати silverlight 4).

Однако, когда я включаю печать большего количества страниц с помощью args.HasMorePages = true;, задание на печать запускается в памяти и отправляет бесконечные копии первой страницы печати документа, что фактически отключает мой компьютер разработчика. Даже если длина сетки составляет всего 2 страницы.

Почему это происходит? Какой здесь возможный обходной путь? Все, что я нашел в сети, - это то, что SL плохо справляется с печатью, но это не настоящее решение.

1 Ответ

1 голос
/ 10 сентября 2010

Свойство HasMorePages указывает на печать серебряным светом, что у вас есть по крайней мере еще одна страница для печати.Событие страницы PrintPage запускается для каждой страницы, которая будет напечатана.

Следовательно, когда вы установите для HasMorePages значение true, вы получите еще одно событие PrintPage, если вы всегда установите его в значение true (так как ваш кодделать) вы создаете бесконечный цикл.

В какой-то момент код должен оставить для HasMorePages значение false.

В конечном счете, разработчик должен выполнить всю логику разбиения на страницы и решить, что будет отображаться на каждой странице, Silverlight не сделает этого автоматически для вас.

...