FlowDocumentがXPSドキュメントとして保存されたときに表示するために、FlowDocumentに含まれる画像を取得するのに問題があります。
これが私がすることです:
- WPFのImageコントロールを使用して画像を作成します。BeginInit/EndInitの呼び出しで囲まれた画像ソースを設定しました。
- 画像をFlowDocumentに追加し、BlockUIContainerでラップします。
- このコードの変更バージョンを使用して、FlowDocumentオブジェクトをXPSファイルに保存します。
次に、保存したファイルをXPSビューアーで表示すると、画像が表示されません。問題は、画像がWPFによって実際に画面に表示されるまで読み込まれないため、XPSファイルに保存されないことです。したがって、回避策があります。最初にFlowDocumentPageViewerを使用して画面にドキュメントを表示し、その後XPSファイルを保存すると、画像が読み込まれ、XPSファイルに表示されます。これは、FlowDocumentPageViewerが非表示になっている場合でも機能します。しかし、それは私に別の挑戦を与えます。これが私がやりたいことです(擬似コードで):
void SaveDocument()
{
AddFlowDocumentToFlowDocumentPageViewer();
SaveFlowDocumentToXpsFile();
}
もちろん、これは機能しません。ドキュメントがXPSファイルに保存される前に、FlowDocumentPageViewerがその内容を表示する機会がないためです。Dispatcher.BeginInvokeの呼び出しでSaveFlowDocumentToXpsFileをラップしようとしましたが、役に立ちませんでした。
私の質問は次のとおりです。
- ドキュメントを実際に画面に表示せずに、XPSファイルを保存する前に画像を強制的にロードすることはできますか?(運が悪かったので、 BitmapImage.CreateOptionsをいじってみました)。
- 質問1の解決策がない場合、FlowDocumentPageViewerがコンテンツの読み込みを完了したことを通知して、XPSファイルを作成するためにいつ保存されるかを知る方法はありますか?