Приложение WPF выдает исключение после печати в файл на принтере doPDF - PullRequest
5 голосов
/ 23 июня 2011

Я сделал отдельное приложение wpf для целей бухгалтерского учета. Приложение работает и хорошо печатает на внешний принтер или принтер Microsoft XPS. Проблема возникает, когда я выбираю doPDF (приложение, которое выводит файл PDF) в качестве принтера. Выход просто отлично; он создает файл PDF и сохраняет его, но, когда я возвращаюсь в приложение и нажимаю любую кнопку, XamlParseException был обработан выдается ошибка, которая говорит

'Вызов конструктора для типа' RegisterMaintenance.DisplayInvoice ', который соответствует указанным ограничениям связывания, вызвал исключение.' Номер строки «5» и позиция строки «7»

InnerException: убедитесь, что файл существует в указанном месте

InnerException: при использовании относительных путей убедитесь, что текущий каталог указан правильно

Почему это происходит и что я могу сделать, чтобы избавиться от этой проблемы.

Ответы [ 3 ]

3 голосов
/ 05 июля 2011

Кажется, что этот принтер PDF изменяет текущий каталог для процесса. Я могу придумать 2 возможных пути решения вашей проблемы.

Первый и наиболее очевидный обходной путь для вашей проблемы - использовать абсолютный путь для «Transactions.xml» и сохранить его в своем app.config. Однако это может стать проблемой, если ваше приложение распределено по разным машинам и установлено в разных местах.

Второй обходной путь - временно сохранить текущий рабочий каталог перед вызовом функции печати, а затем восстановить его, если он изменился. Как то так:

string path = Directory.GetCurrentDirectory();
//Do the print stuff
Directory.SetCurrentDirectory(path);
1 голос
/ 23 июня 2011

Вы можете использовать свой отладчик и установить точку останова в строке номер 5, где вызывается конструктор для RegisteMaintenance.DisplayInvoice. Посмотрите на используемый путь к файлу и устраните проблему. С другой стороны, если вы уверены, что это не проблема, вы можете попробовать / поймать и игнорировать исключение, но я не очень рекомендую это.

1 голос
/ 23 июня 2011

Кажется, что наиболее вероятная причина в том, что какой-то ресурс не найден или уже занят.Пожалуйста, поделитесь с нами своим кодом для номера строки «5» и позиции «7».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...