問題タブ [fixeddocumentsequence]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
data-binding - XpsDocument への印刷時にデータバインディングが失われるのはなぜですか?
アップデート!
バインディングが機能します。問題は、XpsDocumentWriter が FixedDocumentSequence の最初のドキュメントの最初のページを正しく書き込めないことです。これは、この種の作業を行っている多くの人々 (つまり、世界中で 5 人の開発者) が遭遇する問題のようです。解決策は少し奇妙です。私はそれを答えとして含めます。
さて、質問が示唆するよりも少し微妙です。
一連の FixedPages があり、それぞれに DataContext が個別に設定されています。各 FixedPage には、コンテキストにバインドされた 1 つ以上のコントロールもあります。
これらの FixedPages を 1 つの FixedDocument に追加し、この 1 つの FixedDocument を XpsDocument に書き込むと、バインドが参照解除され (いわば)、正しい値が XpsDocument に表示されます。
これらの FixedPages を個々の FixedDocuments に追加すると (各 FP が新しい FD に追加されます)、これらの FixedDocuments が FixedDocumentSequence に追加され、このシーケンスが XpsDocument に書き込まれます。バインドは逆参照されず、FixedPages は空白で表示されます。 .
デバッグによって、バインディングまたはバインディング コンテキストが失われていないことがわかります。これは、この失敗の原因ではありません。
何が起こっているかを説明するためのサンプルコードを次に示します。
2 つの唯一の違いは、固定ドキュメントを固定ドキュメント シーケンスに追加していることであり、それが書き込まれることがわかります。
明らかに、データバインディングが評価され、バインドされた値が挿入される原因となる魔法は、固定ドキュメントが Xps ドキュメントに書き込まれていない場合には発生しません。複数の固定ドキュメントを書き込む必要があり、Write メソッドは 1 回しか呼び出せないため、FixedDocuments を FixedDocumentSequence に追加してから書き込む必要があります。しかし、同様に機能するには、いまいましいデータバインディング も必要です!
この状況での助けをいただければ幸いです。フレームワークの最も一般的な部分ではないことはわかっています。ここにいる誰かがこれに関する運用経験を持っていることを願っています(私はあなたを見ています、潜んでいるMSの従業員です)。
.net - DocumentViewer に複数の FixedDocument を表示し、それらが 1 つのドキュメントであるかのように表示します。
私の WPF アプリには、複数のFixedDocumentオブジェクトがあり、それらを 1 つのドキュメントのようにDocumentViewerにまとめて表示したいと考えています。
ドキュメント ビューアーに1 つのFixedDocumentを表示するのは簡単です。
私の最初のアイデアは、すべての FixedDocuments のFixedDocumentSequenceを作成することでした ( IDocumentPaginatorSourceを実装しているため、 DocumentViewer.Document値として設定することもできます)。ただし、 FixedDocumentSequenceを構築する場合、 DocumentReferenceオブジェクトのコレクションにのみ追加できます。FixedDocumentを直接追加する簡単な方法はありません。また、何らかの形でFixedDocumentsの 1 つにリンクされているDocumentReferenceを作成して追加する方法がわかりません。
私の 2 番目のアイデアは、マスターFixedDocumentを作成し、次にすべてのFixedDocumentsをループして、それらのページをマスターFixedDocumentに移動することでした。しかし、これを行おうとすると、あらゆる種類の問題に遭遇します(すでに別のドキュメントに属しているページを処理するため(そのドキュメントからそれらを削除する機能はありません!など))。
3 つ目のアイデアは、一時的なXpsDocumentを作成してビルドし、自動的に作成されたように見えるFixedDocumentSequenceを取得することでした。私はこれを少し調べましたが、不必要に複雑に感じられるようになってきているので、最初にここに投稿して、他のアイデアがあるかどうかを確認したり、最初の 2 つの試みを支援したりしようと思いました!