Delen via


Documenten in WPF

Windows Presentation Foundation (WPF) biedt een breed scala aan documentfuncties waarmee u inhoud met hoge kwaliteit kunt maken die gemakkelijker toegankelijk en gelezen kan worden dan in eerdere generaties van Windows. Naast verbeterde mogelijkheden en kwaliteit biedt WPF ook geïntegreerde services voor documentweergave, verpakking en beveiliging. Dit onderwerp bevat een inleiding tot WPF-documenttypen en documentverpakkingen.

Soorten documenten

WPF verdeelt documenten in twee brede categorieën op basis van hun beoogde gebruik; deze documentcategorieën worden aangeduid als 'vaste documenten' en 'stroomdocumenten'.

Vaste documenten zijn bedoeld voor toepassingen waarvoor een nauwkeurige presentatie vereist is "wat u ziet is wat u krijgt" (WYSIWYG), onafhankelijk van de gebruikte beeldscherm- of printerhardware. Typische toepassingen voor vaste documenten zijn bureaubladpublicatie, tekstverwerking en formulierindeling, waarbij naleving van het oorspronkelijke paginaontwerp essentieel is. Als onderdeel van de indeling houdt een vast document de precieze positie van inhoudselementen bij, onafhankelijk van het beeldscherm of het afdrukapparaat dat wordt gebruikt. Een vaste documentpagina die wordt weergegeven op een scherm van 96 dpi, wordt bijvoorbeeld precies hetzelfde weergegeven wanneer deze wordt uitgevoerd naar een laserprinter van 600 dpi, net zoals wanneer deze wordt uitgevoerd naar een fototypenetter van 4800 dpi. De pagina-indeling blijft in alle gevallen hetzelfde, terwijl de documentkwaliteit wordt gemaximaliseerd tot de mogelijkheden van elk apparaat.

Ter vergelijking: stroomdocumenten zijn ontworpen om de weergave en leesbaarheid te optimaliseren en worden het beste gebruikt wanneer het leesgemak het primaire scenario voor documentverbruik is. In plaats van op één vooraf gedefinieerde indeling te worden ingesteld, passen stroomdocumenten hun inhoud dynamisch aan en herstromen op basis van runtimevariabelen, zoals venstergrootte, apparaatresolutie en optionele gebruikersvoorkeuren. Een webpagina is een eenvoudig voorbeeld van een stroomdocument waarin de pagina-inhoud dynamisch is opgemaakt zodat deze past bij het huidige venster. Stroomdocumenten optimaliseren de weergave- en leeservaring voor de gebruiker, op basis van de runtime-omgeving. Hetzelfde stroomdocument zal bijvoorbeeld dynamisch opnieuw worden geformatteerd voor optimale leesbaarheid op een scherm met hoge resolutie van 19 inch of een klein 2x3-inch PDA-scherm. Daarnaast hebben stroomdocumenten een aantal ingebouwde functies, waaronder zoeken, weergavemodi die de leesbaarheid optimaliseren en de mogelijkheid om de grootte en het uiterlijk van lettertypen te wijzigen. Zie Overzicht van stroomdocumenten voor illustraties, voorbeelden en uitgebreide informatie over stroomdocumenten.

Documentcontrole en tekstopmaak

Het .NET Framework biedt een set vooraf gebouwde besturingselementen die het gebruik van vaste documenten, stroomdocumenten en algemene tekst in uw toepassing vereenvoudigen. De weergave van vaste documentinhoud wordt ondersteund met behulp van het besturingselement DocumentViewer. Weergave van de inhoud van stroomdocumenten wordt ondersteund door drie verschillende controles: FlowDocumentReader, FlowDocumentPageVieweren FlowDocumentScrollViewer, die zijn toegewezen aan verschillende gebruikersscenario's (zie de secties hieronder). Andere WPF-besturingselementen bieden een vereenvoudigde indeling ter ondersteuning van algemene tekstgebruik (zie Tekst in de gebruikersinterfacehieronder).

Vastgesteld documentbeheer - DocumentViewer

Het besturingselement DocumentViewer is ontworpen om FixedDocument inhoud weer te geven. Het besturingselement DocumentViewer biedt een intuïtieve gebruikersinterface die ingebouwde ondersteuning biedt voor algemene bewerkingen, waaronder afdrukuitvoer, kopiëren naar klembord, zoomen en zoekfuncties voor tekst. Het besturingselement biedt toegang tot pagina's met inhoud via een vertrouwd schuifmechanisme. Net als alle WPF-besturingselementen ondersteunt DocumentViewer volledige of gedeeltelijke restyling, waardoor het besturingselement visueel kan worden geïntegreerd in vrijwel elke toepassing of omgeving.

DocumentViewer is ontworpen om inhoud op een alleen-lezen manier weer te geven; bewerken of wijzigen van inhoud is niet beschikbaar en wordt niet ondersteund.

Besturingselementen voor flowdocumenten

Notitie

Zie Flow Document Overviewvoor meer gedetailleerde informatie over stroomdocumentfuncties en hoe u deze kunt maken.

Weergave van stroomdocumentinhoud wordt ondersteund door drie besturingselementen: FlowDocumentReader, FlowDocumentPageVieweren FlowDocumentScrollViewer.

FlowDocumentReader

FlowDocumentReader bevat functies waarmee de gebruiker dynamisch kan kiezen tussen verschillende weergavemodi, waaronder een weergavemodus met één pagina (pagina-op-een-tijd), een weergavemodus met twee pagina's tegelijk (leesindeling voor boeken) en een doorlopende (ondersteloze) weergavemodus. Zie FlowDocumentReaderViewingModevoor meer informatie over deze weergavemodi. Als u niet de mogelijkheid nodig hebt om dynamisch te schakelen tussen verschillende weergavemodi, bieden FlowDocumentPageViewer en FlowDocumentScrollViewer lichtere stroominhoudweergaven die vastzitten in een bepaalde weergavemodus.

FlowDocumentPageViewer en FlowDocumentScrollViewer

FlowDocumentPageViewer toont inhoud in de weergavemodus voor pagina's tegelijk, terwijl FlowDocumentScrollViewer inhoud weergeeft in de modus voor doorlopend schuiven. Zowel FlowDocumentPageViewer als FlowDocumentScrollViewer zijn vastgemaakt aan een bepaalde weergavemodus. Vergelijk met FlowDocumentReader, dat functies bevat waarmee de gebruiker dynamisch kan kiezen tussen verschillende weergavemodi (zoals voorzien door de FlowDocumentReaderViewingMode-opsomming), maar wel meer middelen vergt dan FlowDocumentPageViewer of FlowDocumentScrollViewer.

Standaard wordt er altijd een verticale schuifbalk weergegeven en wordt een horizontale schuifbalk zo nodig zichtbaar. De standaardgebruikersinterface voor FlowDocumentScrollViewer bevat geen werkbalk; De eigenschap IsToolBarVisible kan echter worden gebruikt om een ingebouwde werkbalk in te schakelen.

Tekst in de gebruikersinterface

Naast het toevoegen van tekst aan documenten, kan tekst uiteraard worden gebruikt in de gebruikersinterface van toepassingen, zoals formulieren. WPF bevat meerdere besturingselementen voor het tekenen van tekst naar het scherm. Elk besturingselement is gericht op een ander scenario en heeft een eigen lijst met functies en beperkingen. Over het algemeen moet het element TextBlock worden gebruikt wanneer beperkte tekstondersteuning vereist is, zoals een korte zin in een gebruikersinterface (UI). Label kan worden gebruikt wanneer minimale tekstondersteuning vereist is. Zie TextBlock Overviewvoor meer informatie.

Documentverpakking

De System.IO.Packaging API's bieden een efficiënte manier om toepassingsgegevens, documentinhoud en gerelateerde resources te organiseren in één container die eenvoudig toegankelijk, draagbaar en eenvoudig te distribueren is. Een ZIP-bestand is een voorbeeld van een Package type dat meerdere objecten als één eenheid kan bevatten. De verpakkings-API's bieden een standaardimplementatie ZipPackage ontworpen met een Open Packaging Conventions-standaard met XML- en ZIP-bestandsarchitectuur. Met de WPF-verpakkings-API's kunt u eenvoudig pakketten maken en objecten hierin opslaan en openen. Een object dat is opgeslagen in een Package wordt een PackagePart ("onderdeel") genoemd. Pakketten kunnen ook ondertekende digitale certificaten bevatten die kunnen worden gebruikt om de oorsprong van een onderdeel te identificeren en te valideren dat de inhoud van een pakket niet is gewijzigd. Pakketten bevatten ook een PackageRelationship functie waarmee aanvullende informatie kan worden toegevoegd aan een pakket of gekoppeld aan specifieke onderdelen zonder de inhoud van bestaande onderdelen daadwerkelijk te wijzigen. Pakketservices ondersteunen ook Microsoft Windows Rights Management (RM).

De WPF-pakketarchitectuur fungeert als de basis voor een aantal belangrijke technologieën:

  • XPS-documenten die voldoen aan de XML Paper Specification (XPS).

  • Open XML-indelingsdocumenten van Microsoft Office 12 (.docx).

  • Aangepaste opslagindelingen voor uw eigen toepassingsontwerp.

Op basis van de verpakkings-API's is een XpsDocument speciaal ontworpen voor het opslaan van WPF-documenten met vaste inhoud. Een XpsDocument is een zelfstandig document dat kan worden geopend in een viewer, weergegeven in een DocumentViewer-besturingselement, doorgestuurd naar een afdrukwachtrij of rechtstreeks uitgevoerd naar een XPS-compatibele printer.

De volgende secties bevatten aanvullende informatie over de Package en XpsDocument API's die worden geleverd met WPF.

Pakketonderdelen

Met de WPF-verpakkings-API's kunnen toepassingsgegevens en -documenten worden ingedeeld in één draagbare eenheid. Een ZIP-bestand is een van de meest voorkomende typen pakketten en is het standaardpakkettype dat wordt geleverd met WPF. Package zelf is een abstracte klasse waaruit ZipPackage wordt geïmplementeerd met behulp van een open xml- en ZIP-bestandsarchitectuur. De methode Open maakt standaard gebruik van ZipPackage om ZIP-bestanden te maken en te gebruiken. Een pakket kan drie basistypen items bevatten:

Artikel Beschrijving
PackagePart Toepassingsinhoud, gegevens, documenten en resourcebestanden.
PackageDigitalSignature [X.509-certificaat] voor identificatie, verificatie en validatie.
PackageRelationship Er is informatie toegevoegd met betrekking tot het pakket of een specifiek onderdeel.

Pakketonderdelen

Een PackagePart ("onderdeel") is een abstracte klasse die verwijst naar een object dat is opgeslagen in een Package. In een ZIP-bestand komen de pakketonderdelen overeen met de afzonderlijke bestanden die zijn opgeslagen in het ZIP-bestand. ZipPackagePart biedt de standaardimplementatie voor serialiseerbare objecten die zijn opgeslagen in een ZipPackage. Net als een bestandsysteem worden de onderdelen in het pakket opgeslagen in een hiërarchische mapstructuur, vergelijkbaar met een maporganisatie. Met behulp van de WPF-verpakkings-API's kunnen toepassingen meerdere PackagePart objecten schrijven, opslaan en lezen met behulp van één ZIP-bestandscontainer.

PakketDigitaleHandtekeningen

Voor beveiliging kan een PackageDigitalSignature ("digitale handtekening") worden gekoppeld aan onderdelen binnen een pakket. Een PackageDigitalSignature bevat een [509] die twee functies biedt:

  1. Identificeert en verifieert de originator van het onderdeel.

  2. Valideert of het onderdeel niet is gewijzigd.

De digitale handtekening voorkomt niet dat een onderdeel wordt gewijzigd, maar een validatiecontrole op basis van de digitale handtekening mislukt als het onderdeel op welke manier dan ook wordt gewijzigd. De toepassing kan vervolgens de juiste actie ondernemen, bijvoorbeeld het openen van het onderdeel blokkeren of de gebruiker waarschuwen dat het onderdeel is gewijzigd en niet veilig is.

Pakketrelaties

Een PackageRelationship ("relatie") biedt een mechanisme voor het koppelen van aanvullende informatie aan het pakket of een onderdeel in het pakket. Een relatie is een faciliteit op pakketniveau die aanvullende informatie aan een onderdeel kan koppelen zonder de inhoud van het onderdeel te wijzigen. Het rechtstreeks invoegen van nieuwe gegevens in de deelinhoud van is meestal niet praktisch in veel gevallen:

  • Het werkelijke type van het onderdeel en het bijbehorende inhoudsschema is niet bekend.

  • Zelfs als dit bekend is, biedt het inhoudsschema mogelijk geen middelen voor het toevoegen van nieuwe informatie.

  • Het onderdeel kan digitaal ondertekend of versleuteld zijn, waardoor eventuele wijzigingen worden uitgesloten.

Pakketrelaties bieden een detecteerbare middelen voor het toevoegen en koppelen van aanvullende informatie aan afzonderlijke onderdelen of aan het hele pakket. Pakketrelaties worden gebruikt voor twee primaire functies:

  1. Afhankelijkheidsrelaties definiëren van het ene naar het andere deel.

  2. Informatierelaties definiëren waarmee notities of andere gegevens met betrekking tot het onderdeel worden toegevoegd.

Een PackageRelationship biedt een snelle, detecteerbare manier om afhankelijkheden te definiëren en andere informatie toe te voegen die is gekoppeld aan een deel van het pakket of het pakket als geheel.

Afhankelijkheidsrelaties

Afhankelijkheidsrelaties worden gebruikt om afhankelijkheden te beschrijven die het ene onderdeel aan andere onderdelen maakt. Een pakket kan bijvoorbeeld een HTML-onderdeel bevatten dat een of meer <img> afbeeldingstags bevat. De afbeeldingstags verwijzen naar afbeeldingen die zich bevinden als andere interne onderdelen van het pakket of extern aan het pakket (zoals toegankelijk via het internet). Als u een PackageRelationship maakt die is gekoppeld aan een HTML-bestand, kunt u de afhankelijke resources snel en eenvoudig detecteren en openen. Een browser- of viewertoepassing heeft rechtstreeks toegang tot de onderdeelrelaties en begint onmiddellijk met het samenstellen van de afhankelijke resources zonder het schema te kennen of het document te parseren.

Informatierelaties

Net als bij een notitie of aantekening kan een PackageRelationship ook worden gebruikt om andere typen gegevens op te slaan die aan een onderdeel moeten worden gekoppeld zonder dat de inhoud van het onderdeel zelf daadwerkelijk hoeft te worden gewijzigd.

XPS-documenten

XPS-document (XML Paper Specification) is een pakket dat een of meer vaste documenten bevat, samen met alle resources en informatie die nodig is voor rendering. XPS is ook de systeemeigen afdrukspoelbestandsformaat van Windows Vista. Een XpsDocument wordt opgeslagen in een standaard ZIP-gegevensset en kan een combinatie van XML- en binaire onderdelen bevatten, zoals afbeeldings- en lettertypebestanden. PackageRelationships worden gebruikt om de afhankelijkheden te definiëren tussen de inhoud en de resources die nodig zijn om het document volledig weer te geven. Het XpsDocument ontwerp biedt één hoogwaardige documentoplossing die ondersteuning biedt voor meerdere toepassingen:

  • Lezen, schrijven en opslaan van inhoud en bronnen van vaste documenten als één, draagbaar en eenvoudig distributeerbaar bestand.

  • Documenten weergeven met de XPS Viewer-toepassing.

  • Documenten uitvoeren in de systeemeigen afdrukspooluitvoerindeling van Windows Vista.

  • Documenten rechtstreeks doorsturen naar een printer die compatibel is met XPS.

Zie ook