我在获取 FlowDocument 中包含的图像以显示 FlowDocument 何时保存为 XPS 文档时遇到了一些困难。
这是我所做的:
- 使用WPF的Image控件创建图像。我设置了通过调用 BeginInit/EndInit 括起来的图像源。
- 将图像添加到 FlowDocument 中,将其包装在BlockUIContainer中。
- 使用此代码的修改版本将 FlowDocument 对象保存到 XPS 文件。
如果我随后在 XPS 查看器中查看保存的文件,则不会显示图像。问题是图像在 WPF 实际显示在屏幕上之前不会加载,因此它们不会保存到 XPS 文件中。因此,有一个解决方法:如果我首先使用FlowDocumentPageViewer在屏幕上显示文档,然后保存 XPS 文件,则图像会加载并显示在 XPS 文件中。即使 FlowDocumentPageViewer 被隐藏,这也有效。但这给了我另一个挑战。这是我想做的(在伪代码中):
void SaveDocument()
{
AddFlowDocumentToFlowDocumentPageViewer();
SaveFlowDocumentToXpsFile();
}
这当然不起作用,因为在将文档保存到 XPS 文件之前,FlowDocumentPageViewer 从来没有机会显示其内容。我尝试将 SaveFlowDocumentToXpsFile 包装在对 Dispatcher.BeginInvoke 的调用中,但它没有帮助。
我的问题是:
- 我可以在保存 XPS 文件之前以某种方式强制加载图像而不实际在屏幕上显示文档吗?(我尝试摆弄BitmapImage.CreateOptions没有运气)。
- 如果问题 #1 没有解决方案,有没有办法告诉 FlowDocumentPageViewer 何时完成加载其内容,以便我知道何时保存以创建 XPS 文件?