我已经为会计目的制作了一个wpf独立应用程序。该应用程序可以很好地打印到外部打印机或Microsoft XPS打印机。当我选择doPDF(输出pdf文件的应用程序)作为打印机时出现问题。输出很好;它会创建pdf文件并保存它,但是,当我回到应用程序并按下任何按钮时, XamlParseException未处理会抛出错误,
'在类型'RegisterMaintenance.DisplayInvoice'上调用与指定绑定约束匹配的构造函数引发异常。行号“5”和行位置“7”
InnerException:验证文件是否存在于指定位置
InnerException:使用相对路径时,请确保当前目录正确
为什么会发生这种情况,我该怎么做才能摆脱这个问题。
答案 0 :(得分:3)
似乎此pdf打印机更改了该进程的当前目录。 我可以为您的问题考虑2种可能的解决方法。
您的问题的第一个也是最明显的解决方法是使用“Transactions.xml”的绝对路径并将其存储在app.config中。但是,如果您的应用程序被分配到各种不同的计算机并安装在不同的位置,则可能会出现问题。
第二种解决方法是在调用print函数之前临时存储当前的工作目录,然后在它发生更改之后将其恢复。像这样:
string path = Directory.GetCurrentDirectory();
//Do the print stuff
Directory.SetCurrentDirectory(path);
答案 1 :(得分:1)
似乎最可能的原因是某些资源未找到或已被占用。请与我们分享行号“5”和行号“7”的代码。
答案 2 :(得分:1)
您可以使用调试器并在第5行设置断点,其中调用RegisteMaintenance.DisplayInvoice的构造函数。查看正在使用的文件路径并解决问题。或者,如果你非常自信这不是问题,你可以尝试/捕捉并忽略异常,但我不建议这样做。