WPF - 如何知道何时下载了FlowDocument中的所有图像

时间:2017-02-08 14:34:47

标签: wpf bitmapimage flowdocument

我的场景:使用MVVM模式我将XAML FlowDocument与ViewModel结合,在UI上显示它,但将其转换为XPS文件。

这主要是有效的:一切都得到了正确呈现,包括Image具有HTTP URL但相对较小或已经在UI上显示(因此被缓存)的gotcha。唯一的Image是大型图像,需要1-2秒才能完全下载。这些不包含在最终文件输出中;这里没什么大惊喜。但我需要一种方法来保证XPS输出将包含所有图像,无论大小或是否已经缓存。

想法#1:

在FlowDocument上有一些检查机制,可以找到所有图像并确定它们是否实际上已下载/准备就绪,然后当一切正常时,运行XPS转换

这里的问题是,即使我要创建一些精心设计的文档检查器,它也不像IsDownloading控件有任何属性指示它已满载。

想法#2 急切地加载我知道将包含在FlowDocument中的所有图像。一旦它们处于神秘的WPF图像缓存中,理论上即使在XPS文件中渲染非常大的图像也应该没有问题。

我对这种方法有很大帮助,几乎可以使用它。我的问题是,如果图像已被缓存,我无法找到放弃热切下载的可靠方法;似乎没有办法测试它是否在缓存中。检查BitmapImage的true属性似乎不可靠,因为即使给定的图像已经被缓存,它也经常会返回async Task

理想的解决方案 将是#1,并设置为await客户端可以matrix_with_point = [0.5 1;0.25 0.5;0.75 0.5];,直到FlowDocument中的所有图像都完全实现。

0 个答案:

没有答案