Frage

In meiner WPF -App habe ich mehrere Festdokument Objekte, die ich in a zusammen anzeigen möchte DocumentViewer, als ob sie ein einzelnes Dokument wären.

Es ist einfach, eine einzelne anzuzeigen Festdokument In einem Dokument -Viewer:

myDocumentViewer.Document = myFixedDocument;

Meine erste Idee war es, eine zu erstellen Fixeddocumentsequence von allen meinen Festdokumente (was auch als die festgelegt werden kann DocumentViewer.document Wert, wie es impliziert IdocumentPaginatorsource). Aber beim Bau a Fixeddocumentsequence, man kann nur eine Sammlung von ergänzen Dokumentverweis Objekte. Es gibt keine einfache Möglichkeit, a hinzuzufügen Festdokument Direkt, und ich kann nicht herausfinden, wie man a erstellt und hinzufügt Dokumentverweis was irgendwie mit einem meiner verbunden ist Festdokumente.

Meine zweite Idee war es, einen Meister zu erstellen Festdokument, und dann durch alle durchlaufen Festdokumente, und bewegen ihre Seiten in den Meister Festdokument. Aber ich stoße auf alle möglichen Probleme, wenn ich versuche, dies zu tun (um mit Seiten zu tun zu haben, die bereits zu einem anderen Dokument gehören (ohne die Möglichkeit, sie aus diesem Dokument zu entfernen! Usw.)

Meine dritte Idee war es, vorübergehend einen vorübergehenden zu erstellen und zu bauen XPSDocument, und abrufen die Fixeddocumentsequence dass es automatisch zu erzeugen scheint. Ich habe mir das ein bisschen angesehen, aber es wird das, was sich unnötig komplex anfühlt, also dachte ich, ich würde hier zuerst posten, um zu sehen, ob es andere Ideen gibt, oder bei meinen ersten beiden Versuchen helfen!

War es hilfreich?

Lösung

Herausgefunden.

Sie können in der Tat dynamisch erstellen Dokumentverweis Objekte verknüpft mit Festdokumente:

var documentReference = new DocumentReference();
documentReference.SetDocument(document);
fixedDocumentSequence.References.Add(documentReference);

Ich bin mir nicht ganz sicher, wie ich das vermisst habe SetDocument Methode vor. Ich denke, ich muss nach einem gesucht haben DocumentReference.Document Eigenschaft mit Getter/Setter. Es ist im .NET -Framework ein wenig inkonsistent, stattdessen zu haben GetDocument und SetDocument Methoden meiner Meinung nach.

Andere Tipps

Haben Sie versucht, dies zu tun, ich habe versucht, Ihren ersten Ansatz zu implementieren? Ich hoffe das wird für dich sein -

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);
                            }
                        }
                    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top