documentViewerにいくつかの固定ドキュメントを表示します。まるでそれらが単一のドキュメントであるかのように
-
27-10-2019 - |
質問
私のWPFアプリには、いくつかあります sixeddocument 私が一緒に表示したいオブジェクト documentViewer, 、まるでそれらが単一のドキュメントであるかのように。
シングルを簡単に表示できます sixeddocument ドキュメントビューアー:
myDocumentViewer.Document = myFixedDocument;
私の最初のアイデアは、aを作成することでした sixeddocument sequence 私のすべての 固定ドキュメント (これはとして設定することもできます documentViewer.Document 実装する価値 idocumentPaginatorSource)。しかし、aを構築するとき sixeddocument sequence, 、コレクションにのみ追加できます 文書化 オブジェクト。追加する簡単な方法はありません sixeddocument 直接、そして私はどのように作成して追加するかを理解できません 文書化 どういうわけか私の1つにリンクされています 固定ドキュメント.
私の2番目のアイデアは、マスターを作成することでした sixeddocument, 、そしてすべてのループをループします 固定ドキュメント, 、そして彼らのページをマスターに移動します sixeddocument. 。しかし、私はこれをやろうとしているときにあらゆる種類の問題に遭遇します(すでに別のドキュメントに属しているページに関係しています(そのドキュメントからそれらを削除する能力はありません!など)
私の3番目のアイデアは、一時的なものを作成して構築することでした XPSDocument, 、およびを取得します sixeddocument sequence 自動的に作成されているように見えること。私はこれを少し見ましたが、それは不必要に複雑に感じるものになるようになっているので、私は最初にここに投稿して、他のアイデアがあるかどうか、または私の最初の2回の試みを手伝ってくれると思いました!
解決
理解した。
実際、動的に作成できます 文書化 にリンクされているオブジェクト 固定ドキュメント:
var documentReference = new DocumentReference();
documentReference.SetDocument(document);
fixedDocumentSequence.References.Add(documentReference);
どうやって見逃したのかよくわかりません SetDocument
前の方法。私は探していたに違いないと思います DocumentReference.Document
ゲッター/セッター付きのプロパティ。 .NETフレームワークでは、代わりにあることは少し矛盾しています getDocument と setDocument 私の意見では、方法。
他のヒント
これを試してみましたか、私はあなたの最初のアプローチを実装しようとしました。私はこれがあなたのためにすることを願っています -
FixedDocument destFixedDoc = new FixedDocument();
foreach (FixedDocument sourceFixedDoc in YourCollection)
{
if ((sourceFixedDoc != null) && (sourceFixedDoc.Pages != null))
{
foreach (PageContent sourcePage in sourceFixedDoc.Pages)
{
PageContent newPage = new PageContent();
newPage.Source = sourcePage.Source;
(newPage as IUriContext).BaseUri = ((IUriContext)sourcePage).BaseUri;
newPage.GetPageRoot(true);
destFixedDoc.Pages.Add(newPage);
}
}
}