Dokumente in Windows Presentation Foundation

Aktualisiert: November 2007

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.

Dieses Thema enthält folgende Abschnitte.

  • Dokumenttypen
  • Steuerelemente und Textlayout in Dokumenten
  • Packen von Dokumenten
  • XPS-Dokumente
  • Verwandte Abschnitte

Dokumenttypen

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 Desktopveröffentlichung, Wortverarbeitung und Formularlayout, wo 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. Statt auf ein vordefiniertes Layout festgelegt zu sein, passen Flussdokumente Inhalte dynamisch an und bauen sie neu auf. Dies basiert auf 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 und Anzeigemodi, mit denen die Lesbarkeit optimiert 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.

Steuerelemente und Textlayout in Dokumenten

.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).

Steuerelement für einheitlich dargestellte Dokumente - DocumentViewer

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.

Steuerelemente für Flussdokumente

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

FlowDocumentReader enthält Features, mit denen Benutzer dynamisch zwischen verschiedenen Anzeigemodi auswählen können. Dazu gehört 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 und FlowDocumentScrollViewer

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 Vergleich dazu bietet FlowDocumentReader Features für die dynamische Auswahl verschiedener Anzeigemodi (die von der FlowDocumentReaderViewingMode-Enumeration bereitgestellt werden), wobei dies ressourcenintensiver als FlowDocumentPageViewer oder FlowDocumentScrollViewer ist.

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

Text in der Benutzeroberfläche

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 eine Vielzahl von Steuerelementen, 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.

Packen von Dokumenten

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-Rechteverwaltung (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.

Paketkomponenten

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.

PackageParts

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 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.

PackageDigitalSignatures

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.

PackageRelationships

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

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.

Informationsbeziehungen

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.

XPS-Dokumente

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.

Siehe auch

Aufgaben

Beispiel zu TextBlock-Eigenschaften

Beispiel für FlowDocument-Eigenschaften

Konzepte

Optimieren der Leistung: Text

Übersicht über Flussdokumente

Übersicht über das Drucken

Serialisierung und Speicherung von Dokumenten

Referenz

FixedDocument

FlowDocument

XpsDocument

ZipPackage

ZipPackagePart

PackageRelationship

DocumentViewer