Пропавшие без вести изображений в FlowDocument сохранили как документ XPS

Я испытываю некоторые затруднения, заставляя изображения, содержавшиеся в FlowDocument показывать, когда FlowDocument сохраняется как документ XPS.

Вот то, что я делаю:

  1. Создайте изображение с помощью управления Изображением WPF. Я установил источник изображения, заключенный в скобки вызовами к BeginInit/EndInit.
  2. Добавьте изображение к FlowDocument, переносящему его в BlockUIContainer.
  3. Сохраните объект FlowDocument в файл XPS с помощью измененной версии этого кода.

Если я затем просматриваю сохраненный файл в средстве просмотра XPS, изображение не показывают. Проблема состоит в том, что изображения не загружаются, пока на самом деле не показано на экране WPF, таким образом, они не сохраняются в файл XPS. Следовательно, существует обходное решение: Если я сначала показываю документ об экране с помощью FlowDocumentPageViewer и затем сохранил файл XPS впоследствии, изображение загружается и обнаруживается в файле XPS. Это работает, даже если FlowDocumentPageViewer скрыт. Но это дает мне другую проблему. Вот то, что я хочу сделать (в псевдокоде):

void SaveDocument()
{
    AddFlowDocumentToFlowDocumentPageViewer();
    SaveFlowDocumentToXpsFile();
}

Это, конечно, не работает, так как FlowDocumentPageViewer никогда не получает шанс показать его содержание, прежде чем документ будет сохранен в файл XPS. Я пытался перенести SaveFlowDocumentToXpsFile в вызов Диспетчеру. BeginInvoke, но это не помогло.

Мои вопросы:

  1. Я могу так или иначе вынудить изображения загрузиться прежде, чем сохранить файл XPS, на самом деле не показывая документ об экране? (Я пытался играть с BitmapImage. CreateOptions без удачи).
  2. Если нет никакого решения подвергнуть сомнению № 1, есть ли способ сказать, когда FlowDocumentPageViewer закончил загружать свое содержание так, чтобы я знал, когда это - сохранение для создания файла XPS?

7
задан Jakob Christensen 11 March 2010 в 13:19
поделиться