Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Dokumente in WPF

 

Veröffentlicht: Juni 2016

Windows Presentation Foundation (WPF) enthält eine Vielzahl von Dokumentfeatures, anhand derer hochwertige Inhalte erstellt werden können, auf die im Vergleich zu vorherigen Generationen von Windows leichter zugegriffen werden kann, bzw. die einfacher gelesen werden können. Außer einer verbesserten Leistungsfähigkeit und Qualität bietet WPF auch integrierte Dienste für die Dokumentenanzeige, das Packen und für die Sicherheit. Dieses Thema enthält eine Einführung in die WPF-Dokumenttypen und in das Packen von Dokumenten.

WPF unterteilt Dokumente auf der Grundlage ihrer beabsichtigten Verwendung in zwei große Kategorien. Diese Dokumentkategorien werden als "einheitlich dargestellte Dokumente" und "Flussdokumente" bezeichnet.

Einheitlich dargestellte Dokumente sind für Anwendungen geeignet, bei denen unabhängig davon, welche Hardware für das Anzeigen und Drucken von Dokumenten verwendet wird, eine präzise Präsentation im Format "what you see is what you get" (WYSIWYG) erforderlich ist. Zu den typischen Verwendungsformen von einheitlich dargestellten Dokumenten zählen Desktop-Publishing, Textverarbeitung und Formularlayout, bei denen die Beibehaltung der ursprünglichen Seitendarstellung wichtig ist. Ein einheitlich dargestelltes Dokument behält unabhängig vom Gerät, das zur Anzeige oder zum Ausdruck verwendet wird, die exakte Positionierung der Inhaltselemente als Teil seines Layouts bei. Beispielsweise wird ein einheitlich dargestelltes Dokument, das mit 96 DPI (Dots Per Inch) auf einem Bildschirm angezeigt wird, exakt auf dieselbe Weise dargestellt, wenn es auf einem Laserdrucker mit 600 DPI oder im Fotosatz mit 4800 DPI gedruckt wird. Das Seitenlayout bleibt in allen Fällen gleich, während sich die Qualität des Dokuments nach der maximalen Leistungsfähigkeit der einzelnen Geräte richtet.

Im Vergleich hierzu optimieren Flussdokumente die Anzeige und Lesbarkeit und eignen sich insbesondere für die Szenarien, in denen der Hauptzweck darin besteht, leicht lesbare Dokumente zu erzeugen. Flussdokumente sind nicht auf ein vordefiniertes Layout festgelegt, sondern passen Inhalte dynamisch an und bauen sie neu auf. Dies geschieht auf der Basis von Laufzeitvariablen, wie z. B. Fenstergröße, Geräteauflösung und optionalen Benutzereinstellungen. Eine Webseite ist ein einfaches Beispiel für ein Flussdokument. Hier wird der Seiteninhalt dynamisch formatiert und so dem aktuellen Fenster angepasst. Flussdokumente optimieren auf der Grundlage der Laufzeitumgebung die Anzeige und die Lesbarkeit für den Benutzer. Um z. B. sowohl auf einem hochauflösenden 19-Zoll-Bildschirm als auch auf einem kleinen 2x3-Zoll-PDA-Bildschirm eine optimale Lesbarkeit zu erzielen, wird dasselbe Flussdokument dynamisch umformatiert. Zusätzlich besitzen Flussdokumente eine Anzahl integrierter Features, darunter Suchfunktionen, Anzeigemodi, mit denen die Lesbarkeit verbessert wird, und die Fähigkeit, die Größe und die Darstellung von Schriftarten zu ändern. Illustrationen, Beispiele und ausführliche Informationen über Flussdokumente finden Sie unter Übersicht über Flussdokumente.

.NET Framework enthält eine Reihe von vordefinierten Steuerelementen, die die Verwendung von einheitlich dargestellten Dokumenten, Flussdokumenten und von allgemeinem Text in Anwendungen vereinfachen. Die Inhalte der einheitlich dargestellten Dokumente können mithilfe des Steuerelements DocumentViewer angezeigt werden. Die Anzeige der Flussdokumentinhalte wird von drei unterschiedlichen Steuerelementen unterstützt: FlowDocumentReader, FlowDocumentPageViewer und FlowDocumentScrollViewer, die verschiedenen Benutzerszenarien zugeordnet sind (weitere Informationen finden Sie in den folgenden Abschnitten). Andere WPF-Steuerelemente stellen ein vereinfachtes Layout zur Unterstützung allgemeiner Textverwendungen bereit (weitere Informationen finden Sie unter Text in der Benutzeroberfläche).

Das DocumentViewer-Steuerelement ist für die Anzeige von FixedDocument-Inhalten konzipiert. Das DocumentViewer-Steuerelement stellt anhand seiner intuitiven Benutzeroberfläche eine integrierte Unterstützung für Routinevorgänge, einschließlich Druckausgabe, Kopieren in die Zwischenablage, Zoomen und Features zur Textsuche, bereit. Das Steuerelement ermöglicht den Zugriff auf Seiteninhalte über einen vertrauten Bildlaufmechanismus. Wie alle WPF-Steuerelemente unterstützt DocumentViewer die komplette oder partielle Neuformatierung, wodurch das Steuerelement in praktisch jede Anwendung oder Umgebung visuell integriert werden kann.

DocumentViewer zeigt Inhalte schreibgeschützt an. Das Bearbeiten und Ändern von Inhalten ist nicht möglich und wird nicht unterstützt.

Hinweis: Ausführlichere Informationen zu den Features von Flussdokumenten sowie deren Erstellung finden Sie unter Übersicht über Flussdokumente.

Die Anzeige der Flussdokumentinhalte wird von drei Steuerelementen unterstützt: FlowDocumentReader, FlowDocumentPageViewer und FlowDocumentScrollViewer.

FlowDocumentReader enthält Features, mit denen Benutzer dynamisch zwischen verschiedenen Anzeigemodi auswählen können. Dazu gehören ein einseitiger (jeweils einzelne Seiten) Anzeigemodus, ein Anzeigemodus mit zwei Seiten gleichzeitig (Buchformat) und ein Anzeigemodus mit fortlaufendem (randlosem) Bildlauf. Weitere Informationen zu diesen Anzeigemodi finden Sie unter FlowDocumentReaderViewingMode. Wenn keine dynamischen Wechsel zwischen den unterschiedlichen Anzeigemodi erforderlich sind, bieten FlowDocumentPageViewer und FlowDocumentScrollViewer auch weniger umfangreiche Anzeigen für fortlaufenden Inhalt, die auf einen bestimmten Anzeigemodus festgelegt sind.

FlowDocumentPageViewer zeigt Inhalt im einseitigen Anzeigemodus an, während FlowDocumentScrollViewer Inhalt im fortlaufenden Bildlaufmodus anzeigt. Sowohl FlowDocumentPageViewer als auch FlowDocumentScrollViewer sind auf einen bestimmten Anzeigemodus festgelegt. Im Gegensatz dazu bietet FlowDocumentReader Features für die dynamische Auswahl verschiedener Anzeigemodi (welche von der FlowDocumentReaderViewingMode-Enumeration bereitgestellt werden). Dies ist jedoch ressourcenintensiver als FlowDocumentPageViewer oder FlowDocumentScrollViewer.

Standardmäßig wird immer eine vertikale Bildlaufleiste und eine horizontale Bildlaufleiste nach Bedarf angezeigt. Die standardmäßige UI für FlowDocumentScrollViewer enthält keine Symbolleiste; die IsToolBarVisible-Eigenschaft kann jedoch verwendet werden, um eine integrierte Symbolleiste zu aktivieren.

Text kann in Dokumenten nicht nur hinzugefügt werden, sondern wird offensichtlich auch in Benutzeroberflächen von Anwendungen, z. B. in Formularen, verwendet. WPF enthält mehrere Steuerelemente, um Text auf dem Bildschirm zeichnen zu können. Jedes Steuerelement richtet sich an ein anderes Szenario und verfügt über seine individuellen Features und Einschränkungen. Im Allgemeinen sollte das TextBlock-Element verwendet werden, wenn eine eingeschränkte Textunterstützung erforderlich ist, z. B. ein kurzer Satz in einer Benutzeroberfläche (User Interface, UI). Label kann verwendet werden, wenn nur ein Minimum an Textunterstützung erforderlich ist. Weitere Informationen finden Sie unter Übersicht über TextBlock.

Die System.IO.Packaging-APIs stellen ein effizientes Verfahren bereit, um Anwendungsdaten, Dokumentinhalte und zugehörige Ressourcen in einem einzelnen Container, auf den einfach zugegriffen werden kann und der portabel sowie leicht zu verteilen ist, zusammenzufassen. Eine ZIP-Datei ist ein Beispiel für einen Package-Typ, der mehrere Objekte in einer einzelnen Einheit enthalten kann. Die APIs zum Packen von Dokumenten stellen eine Standard-ZipPackage-Implementierung bereit, die einen Open Packaging Conventions-Standard mit XML und ZIP-Dateiarchitektur verwendet. Die WPF-APIs zum Packen von Dokumenten ermöglichen eine einfache Erstellung der Pakete sowie ein einfaches Speichern und Zugreifen auf die darin enthaltenen Objekte. Ein in einem Package gespeichertes Objekt wird als PackagePart ("Part") bezeichnet. Pakete können auch signierte digitale Zertifikate enthalten, die verwendet werden können, um den Ersteller des Parts zu identifizieren und um zu überprüfen, ob der Paketinhalt geändert wurde. Pakete enthalten außerdem ein PackageRelationship-Feature, das es ermöglicht, dem Paket zusätzliche Informationen hinzuzufügen oder bestimmten Parts zuzuordnen, ohne den Inhalt bereits vorhandener Parts ändern zu müssen. Die Paketdienste unterstützen außerdem Microsoft Windows Rights Management (RM).

Die WPF-Paketarchitektur dient als Grundlage für eine Anzahl von Schlüsseltechnologien:

  • XPS-Dokumente, die der XML Paper Specification (XPS) entsprechen.

  • Microsoft Office "12"-Dokumente im Open XML-Format (.docx).

  • Benutzerdefinierte Speicherformate für den eigenen Anwendungsentwurf.

Auf der Grundlage der zum Packen von Dokumenten verwendeten APIs ist ein XpsDocument speziell zum Speichern von WPF-Dokumenten mit einheitlich dargestellten Inhalten konzipiert. Ein XpsDocument ist ein eigenständiges Dokument, das in einem Viewer geöffnet, in einem DocumentViewer-Steuerelement angezeigt, an einen Druckerspooler weitergeleitet oder direkt auf einem XPS-kompatiblen Drucker ausgegeben werden kann.

Die folgenden Abschnitte enthalten weitere Informationen zu den Package- und XpsDocument-APIs, die in WPF enthalten sind.

Die WPF-APIs zum Packen von Dokumenten ermöglichen es, Anwendungsdaten und Dokumente in einer einzigen portablen Einheit zusammenzufassen. Eine ZIP-Datei ist eine der häufigsten Paketarten und ist die Standardpaketart in WPF. Package selbst ist eine abstrakte Klasse, aus der ZipPackage mithilfe einer Open Standard-XML- und ZIP-Dateiarchitektur implementiert wird. Die Open-Methode verwendet ZipPackage, um ZIP-Dateien zu erstellen und standardmäßig zu verwenden. Ein Paket kann drei grundlegende Elementtypen enthalten:

PackagePart

Anwendungsinhalte, Daten, Dokumente und Ressourcendateien.

PackageDigitalSignature

X.509-Zertifikat zur Identifikation, Authentifizierung und Validierung.

PackageRelationship

Hinzugefügte Informationen, die sich auf das Paket oder auf einen bestimmten Part beziehen.

Ein PackagePart ("Part") ist eine abstrakte Klasse, die sich auf ein Objekt bezieht, das in einem Package gespeichert wird. In einer ZIP-Datei entsprechen die Parts den einzelnen Dateien, die in der ZIP-Datei gespeichert sind. ZipPackagePart stellt die Standardimplementierung für serialisierbare Objekte bereit, die in einem ZipPackage-Element gespeichert sind. Die in einem Paket enthaltenen Parts werden wie in einem Dateisystem in einer hierarchisch aufgebauten Verzeichnis- oder Ordnerstruktur gespeichert. Mithilfe der WPF-APIs zum Packen von Dokumenten können Anwendungen mehrere PackagePart-Objekte unter Verwendung eines einzigen ZIP-Dateicontainers schreiben, speichern und lesen.

Den in einem Paket enthaltenen Parts kann aus Sicherheitsgründen eine PackageDigitalSignature (digitale Signatur) zugeordnet werden. Eine PackageDigitalSignature umfasst ein 509, das zwei Features bereitstellt:

  1. Identifiziert und authentifiziert den Ersteller des Parts.

  2. Überprüft, ob das Part geändert wurde.

Die digitale Signatur verhindert nicht das Ändern von Parts, die Validierung der digitalen Signatur schlägt jedoch fehl, wenn ein Part geändert wurde. Die Anwendung kann dann eine entsprechende Aktion ausführen, z. B. das Öffnen des Parts abblocken oder den Benutzer benachrichtigen, dass das Part geändert wurde und nicht sicher ist.

Eine PackageRelationship ("Beziehung") stellt einen Mechanismus zum Zuordnen von zusätzlichen Informationen zum Paket oder zu einem Part im Paket bereit. Eine Beziehung ist eine Möglichkeit auf Paketebene, um einem Part zusätzliche Informationen zuzuordnen, ohne den tatsächlichen Inhalt des Parts zu ändern. Das direkte Einfügen von neuen Daten in den Inhalt des Parts ist in vielen Fällen nicht praktikabel:

  • Der tatsächliche Parttyp und sein Inhaltsschema sind unbekannt.

  • Selbst wenn das Inhaltsschema bekannt ist, bietet es evtl. keine Möglichkeit zum Hinzufügen von neuen Informationen.

  • Das Part könnte digital signiert oder verschlüsselt sein und so jede Änderung ausschließen.

Paketbeziehungen bieten eine erkennbare Möglichkeit zum Hinzufügen und Zuordnen von zusätzlichen Informationen zu einzelnen Parts oder zum gesamten Paket. Paketbeziehungen werden für zwei Hauptfunktionen verwendet:

  1. Definieren von Abhängigkeitsbeziehungen von einem Part zu einem anderen Part.

  2. Definieren von Informationsbeziehungen, die dem Part partsbezogene Hinweise oder andere Daten hinzufügen.

Eine PackageRelationship bietet eine schnelle, erkennbare Möglichkeit zur Definition von Abhängigkeiten und zum Hinzufügen von anderen Informationen, die nur einem Paketpart oder dem gesamten Paket zugeordnet sind.

Abhängigkeitsbeziehungen werden zum Beschreiben von Abhängigkeiten verwendet, die zwischen einem Part und anderen Parts bestehen. Zum Beispiel könnte ein Paket einen HTML-Part enthalten, der einen oder mehrere Bildtags (<img>) aufweist. Die Bildtags beziehen sich auf Bilder, die entweder andere Parts innerhalb des Pakets darstellen oder sich außerhalb des Pakets befinden (z. B. im Internet verfügbar). Durch das Erstellen einer PackageRelationship im Zusammenhang mit einer HTML-Datei können die abhängigen Ressourcen schnell und leicht ermittelt und abgerufen werden. Browser- oder Vieweranwendungen können direkt auf die Partbeziehungen zugreifen und sofort, ohne das Schema zu kennen, mit der Zusammenstellung der abhängigen Ressourcen beginnen oder das Dokument analysieren.

Wie bei einem Hinweis oder einer Anmerkung kann eine PackageRelationship auch zum Speichern anderer Informationsarten verwendet werden, die dem Part zugeordnet werden sollen, ohne tatsächlich den Inhalt des Parts ändern zu müssen.

Ein XML Paper Specification (XPS)-Dokument ist ein Paket, das ein oder mehrere einheitlich dargestellte Dokumente zusammen mit allen Ressourcen und Informationen enthält, die zum Rendern erforderlich sind. XPS ist ferner das systemeigene Druckerspoolformat in Windows Vista. Ein XpsDocument ist im Standard-ZIP-Dataset gespeichert und kann eine Kombination von XML und binären Komponenten, z. B. Bild- und Schriftartdateien, enthalten. PackageRelationships werden verwendet, um die Abhängigkeiten zwischen dem Inhalt und den Ressourcen zu definieren, die zum vollständigen Rendern des Dokuments erforderlich sind. Das XpsDocument-Design stellt eine individuelle, hoch zuverlässige Dokumentlösung bereit, die mehrere Verwendungen unterstützt:

  • Lesen, Schreiben und Speichern der Inhalte von einheitlich dargestellten Dokumenten und Ressourcen als einzelne, portable und leicht zu verteilende Datei.

  • Anzeigen von Dokumenten mit der XPS-Vieweranwendung.

  • Ausgeben von Dokumenten im Ausgabeformat des systemeigenen Druckerspoolers in Windows Vista.

  • Direktes Routing von Dokumenten zu einem XPS-kompatiblen Drucker.

Anzeigen: