Documenti in WPFDocuments in WPF

Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) offre un'ampia gamma di funzionalità dei documenti che consentono la creazione di contenuto ad alta fedeltà progettato per essere più facilmente accessibile e leggibile rispetto alle generazioni precedenti di Windows.offers a wide range of document features that enable the creation of high-fidelity content that is designed to be more easily accessed and read than in previous generations of Windows. Oltre a caratteristiche avanzate in termini di funzionalità e qualità, WPFWPF assicura servizi integrati per la visualizzazione, la creazione di pacchetti e la sicurezza dei documenti.In addition to enhanced capabilities and quality, WPFWPF also provides integrated services for document display, packaging, and security. Questo argomento costituisce un'introduzione ai tipi di documenti e alla creazione di pacchetti di WPFWPF.This topic provides an introduction to WPFWPF document types and document packaging.

Tipi di documentiTypes of Documents

In WPFWPF i documenti sono suddivisi in due categorie generali in base all'uso previsto: documenti statici e documenti dinamici.WPFWPF divides documents into two broad categories based on their intended use; these document categories are termed "fixed documents" and "flow documents."

I documenti corretti sono destinati ad applicazioni che richiedono una presentazione "What You See is what you get" (WYSIWYG), indipendentemente dall'hardware di visualizzazione o della stampante usato.Fixed documents are intended for applications that require a precise "what you see is what you get" (WYSIWYG) presentation, independent of the display or printer hardware used. Tra gli usi tipici dei documenti statici rientrano le attività di desktop publishing, elaborazione di testi e layout di form, in cui la corrispondenza alla progettazione della pagina originale è essenziale.Typical uses for fixed documents include desktop publishing, word processing, and form layout, where adherence to the original page design is critical. Come parte del layout, in un documento statico viene mantenuta la disposizione precisa degli elementi di contenuto indipendentemente dal dispositivo di visualizzazione o di stampa in uso.As part of its layout, a fixed document maintains the precise positional placement of content elements independent of the display or print device in use. Ad esempio, la pagina di un documento statico visualizzata con un'impostazione di 96 dpi non varia quando viene stampata con una stampante laser a 600 dpi o con un fotocompositore a 4800 dpi.For example, a fixed document page viewed on 96 dpi display will appear exactly the same when it is output to a 600 dpi laser printer as when it is output to a 4800 dpi phototypesetter. Il layout di pagina rimane invariato in ogni caso, benché la qualità del documento dipenda dalle capacità del dispositivo usato.The page layout remains the same in all cases, while the document quality maximizes to the capabilities of each device.

D'altro canto, i documenti dinamici sono progettati per ottimizzare la visualizzazione e la leggibilità e sono particolarmente adatti quando la facilità di lettura è il principale requisito d'uso per il documento.By comparison, flow documents are designed to optimize viewing and readability and are best utilized when ease of reading is the primary document consumption scenario. Anziché essere impostati su un layout predefinito, questi documenti consentono di adattare e ridisporre il contenuto in modo dinamico in base alle variabili in fase di esecuzione, ad esempio, le dimensioni della finestra, la risoluzione del dispositivo e le preferenze facoltative dell'utente.Rather than being set to one predefined layout, flow documents dynamically adjust and reflow their content based on run-time variables such as window size, device resolution, and optional user preferences. Una pagina Web è un esempio semplice di documento dinamico in cui il contenuto della pagina viene formattato dinamicamente per adattarsi alla finestra corrente.A Web page is a simple example of a flow document where the page content is dynamically formatted to fit the current window. I documenti dinamici ottimizzano l'esperienza di visualizzazione e di lettura per l'utente, in base all'ambiente di runtime.Flow documents optimize the viewing and reading experience for the user, based on the runtime environment. Ad esempio, lo stesso documento dinamico verrà riformattato in modo dinamico per una leggibilità ottimale sia su dispositivi di visualizzazione da 19 pollici ad alta risoluzione che su piccoli schermi PDA da 2x3 pollici.For example, the same flow document will dynamically reformat for optimal readability on either high-resolution 19-inch display or a small 2x3-inch PDA screen. Inoltre, i documenti dinamici dispongono di numerose funzionalità incorporate tra cui ricerca, modalità di visualizzazione che ottimizzano la leggibilità e possibilità di modificare le dimensioni e l'aspetto dei tipi di carattere.In addition, flow documents have a number of built in features including search, viewing modes that optimize readability, and the ability to change the size and appearance of fonts. Vedere Cenni preliminari sui documenti dinamici per immagini, esempi e informazioni approfondite sui documenti dinamici.See Flow Document Overview for illustrations, examples, and in-depth information on flow documents.

Controlli dei documenti e layout del testoDocument Controls and Text Layout

Il .NET Framework fornisce un set di controlli predefiniti che semplificano l'uso di documenti fissi, documenti dinamici e testo generale all'interno dell'applicazione.The .NET Framework provides a set of pre-built controls that simplify using fixed documents, flow documents, and general text within your application. La visualizzazione del contenuto del documento fisso è supportata tramite il controllo DocumentViewer.The display of fixed document content is supported using the DocumentViewer control. La visualizzazione del contenuto dei documenti dinamici è supportata da tre controlli diversi: FlowDocumentReader, FlowDocumentPageViewere FlowDocumentScrollViewer che vengono mappati a diversi scenari utente (vedere le sezioni seguenti).Display of flow document content is supported by three different controls: FlowDocumentReader, FlowDocumentPageViewer, and FlowDocumentScrollViewer which map to different user scenarios (see sections below). Altri controlli di WPFWPF forniscono un layout semplificato per supportare l'uso di testo generico (vedere la sezione Testo nell'interfaccia utente più avanti).Other WPFWPF controls provide simplified layout to support general text uses (see Text in the User Interface, below).

Controllo dei documenti statici: DocumentViewerFixed Document Control - DocumentViewer

Il controllo DocumentViewer è progettato per visualizzare FixedDocument contenuto.The DocumentViewer control is designed to display FixedDocument content. Il controllo DocumentViewer fornisce un'interfaccia utente intuitiva che offre supporto incorporato per operazioni comuni, tra cui l'output di stampa, la copia negli Appunti, lo zoom e le funzionalità di ricerca del testo.The DocumentViewer control provides an intuitive user interface that provides built-in support for common operations including print output, copy to clipboard, zoom, and text search features. Il controllo consente di accedere a pagine di contenuto attraverso un meccanismo di scorrimento intuitivo.The control provides access to pages of content through a familiar scrolling mechanism. Come tutti i controlli WPFWPF, DocumentViewer supporta il restyling completo o parziale, che consente di integrare visivamente il controllo in qualsiasi applicazione o ambiente.Like all WPFWPF controls, DocumentViewer supports complete or partial restyling, which enables the control to be visually integrated into virtually any application or environment.

DocumentViewer è progettato per visualizzare il contenuto in modalità di sola lettura. la modifica o la modifica del contenuto non è disponibile e non è supportata.DocumentViewer is designed to display content in a read-only manner; editing or modification of content is not available and is not supported.

Controlli dei documenti dinamiciFlow Document Controls

Nota

Per informazioni più dettagliate sulle funzionalità dei documenti dinamici e su come crearle, vedere Cenni preliminari sui documenti dinamici.For more detailed information on flow document features and how to create them, see Flow Document Overview.

La visualizzazione del contenuto dei documenti dinamici è supportata da tre controlli: FlowDocumentReader, FlowDocumentPageViewere FlowDocumentScrollViewer.Display of flow document content is supported by three controls: FlowDocumentReader, FlowDocumentPageViewer, and FlowDocumentScrollViewer.

FlowDocumentReaderFlowDocumentReader

FlowDocumentReader include funzionalità che consentono all'utente di scegliere in modo dinamico le varie modalità di visualizzazione, inclusa una modalità di visualizzazione a pagina singola (pagina alla volta), una modalità di visualizzazione a due pagine alla volta (formato lettura libro) e uno scorrimento continuo (senza fondo) modalità di visualizzazione.FlowDocumentReader includes features that enable the user to dynamically choose between various viewing modes, including a single-page (page-at-a-time) viewing mode, a two-page-at-a-time (book reading format) viewing mode, and a continuous scrolling (bottomless) viewing mode. Per ulteriori informazioni su queste modalità di visualizzazione, vedere FlowDocumentReaderViewingMode.For more information about these viewing modes, see FlowDocumentReaderViewingMode. Se non è necessario passare dinamicamente da una modalità di visualizzazione all'altra, FlowDocumentPageViewer e FlowDocumentScrollViewer forniscono visualizzatori di contenuto del flusso più semplici che sono corretti in una particolare modalità di visualizzazione.If you do not need the ability to dynamically switch between different viewing modes, FlowDocumentPageViewer and FlowDocumentScrollViewer provide lighter-weight flow content viewers that are fixed in a particular viewing mode.

FlowDocumentPageViewer e FlowDocumentScrollViewerFlowDocumentPageViewer and FlowDocumentScrollViewer

FlowDocumentPageViewer Visualizza il contenuto nella modalità di visualizzazione pagina alla volta, mentre FlowDocumentScrollViewer Visualizza il contenuto in modalità di scorrimento continuo.FlowDocumentPageViewer shows content in page-at-a-time viewing mode, while FlowDocumentScrollViewer shows content in continuous scrolling mode. Sia FlowDocumentPageViewer che FlowDocumentScrollViewer sono corretti a una particolare modalità di visualizzazione.Both FlowDocumentPageViewer and FlowDocumentScrollViewer are fixed to a particular viewing mode. Confrontare con FlowDocumentReader, che include funzionalità che consentono all'utente di scegliere dinamicamente tra le varie modalità di visualizzazione (fornite dall'enumerazione FlowDocumentReaderViewingMode), al costo di un maggior utilizzo di risorse rispetto a FlowDocumentPageViewer o FlowDocumentScrollViewer.Compare to FlowDocumentReader, which includes features that enable the user to dynamically choose between various viewing modes (as provided by the FlowDocumentReaderViewingMode enumeration), at the cost of being more resource intensive than FlowDocumentPageViewer or FlowDocumentScrollViewer.

Per impostazione predefinita, viene sempre visualizzata una barra di scorrimento verticale e in caso di necessità diventa visibile una barra di scorrimento orizzontale.By default, a vertical scrollbar is always shown, and a horizontal scrollbar becomes visible if needed. Il Interfaccia utenteUI predefinito per FlowDocumentScrollViewer non include una barra degli strumenti; Tuttavia, la proprietà IsToolBarVisible può essere utilizzata per abilitare una barra degli strumenti incorporata.The default Interfaccia utenteUI for FlowDocumentScrollViewer does not include a toolbar; however, the IsToolBarVisible property can be used to enable a built-in toolbar.

Testo nell'interfaccia utenteText in the User Interface

Oltre all'aggiunta di testo ai documenti, è ovviamente possibile usare il testo nell'interfaccia utente delle applicazioni, ad esempio nei form.Besides adding text to documents, text can obviously be used in application UI such as forms. WPFWPF include più controlli per la creazione di testo sullo schermo.includes multiple controls for drawing text to the screen. Ogni controllo è destinato a uno scenario diverso e dispone di un proprio elenco di funzionalità e limitazioni.Each control is targeted to a different scenario and has its own list of features and limitations. In generale, l'elemento TextBlock deve essere utilizzato quando è necessario il supporto di testo limitato, ad esempio una breve frase in una interfaccia utenteuser interface (UI).In general, the TextBlock element should be used when limited text support is required, such as a brief sentence in a interfaccia utenteuser interface (UI). Label può essere utilizzato quando è richiesto un supporto di testo minimo.Label can be used when minimal text support is required. Per altre informazioni, vedere Cenni preliminari sul controllo TextBlock.For more information, see TextBlock Overview.

Creazione di pacchetti di documentiDocument Packaging

Le API System.IO.Packaging offrono un modo efficiente per organizzare i dati delle applicazioni, il contenuto dei documenti e le risorse correlate in un unico contenitore semplice da accedere, portatile e facile da distribuire.The System.IO.Packaging APIs provide an efficient means to organize application data, document content, and related resources in a single container that is simple to access, portable, and easy to distribute. Un file ZIP è un esempio di Package tipo in grado di contenere più oggetti come singola unità.A ZIP file is an example of a Package type capable of holding multiple objects as a single unit. Le API per la creazione di pacchetti forniscono un'implementazione di ZipPackage predefinita progettata usando uno standard Open Packaging Conventions con l'architettura di file XML e ZIP.The packaging APIs provide a default ZipPackage implementation designed using an Open Packaging Conventions standard with XML and ZIP file architecture. Le API WPFWPF Packaging semplificano la creazione di pacchetti e l'archiviazione e l'accesso agli oggetti in essi contenuti.The WPFWPF packaging APIs make it simple to create packages, and to store and access objects within them. Un oggetto archiviato in un Package viene definito come PackagePart ("parte").An object stored in a Package is referred to as a PackagePart ("part"). I pacchetti possono anche includere certificati digitali firmati utilizzabili per identificare l'autore di una parte e per confermare che il contenuto di un pacchetto non è stato modificato.Packages can also include signed digital certificates that can be used to identify the originator of a part and to validate that the contents of a package have not been modified. I pacchetti includono inoltre una funzionalità PackageRelationship che consente di aggiungere informazioni aggiuntive a un pacchetto o associate a parti specifiche senza modificare effettivamente il contenuto delle parti esistenti.Packages also include a PackageRelationship feature that allows additional information to be added to a package or associated with specific parts without actually modifying the content of existing parts. I servizi pacchetti supportano anche Microsoft Windows Rights Management (RM).Package services also support Microsoft Windows Rights Management (RM).

L'architettura dei pacchetti di WPFWPF costituisce la base per numerose tecnologie chiave:The WPFWPF Package architecture serves as the foundation for a number of key technologies:

  • Documenti XPS conformi a XPS (XML Paper Specification).XPS documents conforming to the XML Paper Specification (XPS).

  • Documenti in formato XML aperto di Microsoft Office "12" (con estensione docx).Microsoft Office "12" open XML format documents (.docx).

  • Formati di archiviazione personalizzati per la progettazione delle applicazioni.Custom storage formats for your own application design.

In base alle API per la creazione di pacchetti, un XpsDocument è progettato appositamente per archiviare WPFWPF documenti di contenuto fissi.Based on the packaging APIs, an XpsDocument is specifically designed for storing WPFWPF fixed content documents. Un XpsDocument è un documento autonomo che può essere aperto in un visualizzatore, visualizzato in un controllo DocumentViewer, instradato a uno spool di stampa o inviato direttamente a una stampante compatibile con XPS.An XpsDocument is a self-contained document that can be opened in a viewer, displayed in a DocumentViewer control, routed to a print spool, or output directly to an XPS-compatible printer.

Le sezioni seguenti forniscono informazioni aggiuntive sulle API Package e XpsDocument fornite con WPFWPF.The following sections provide additional information on the Package and XpsDocument APIs provided with WPFWPF.

Componenti dei pacchettiPackage Components

Le API per la creazione di pacchetti di WPFWPF consentono l'organizzazione dei dati delle applicazioni e dei documenti in un'unica unità portabile.The WPFWPF packaging APIs allow application data and documents to be organized into a single portable unit. Uno dei tipi di pacchetti più comuni è il file ZIP, il tipo predefinito fornito con WPFWPF.A ZIP file is one of the most common types of packages and is the default package type provided with WPFWPF. Package è una classe astratta da cui viene implementato ZipPackage mediante un'architettura di file XML e ZIP standard aperta.Package itself is an abstract class from which ZipPackage is implemented using an open standard XML and ZIP file architecture. Il metodo Open utilizza ZipPackage per creare e utilizzare file ZIP per impostazione predefinita.The Open method uses ZipPackage to create and use ZIP files by default. Un pacchetto può contenere tre tipi di elementi di base:A package can contain three basic types of items:

PackagePart Contenuto delle applicazioni, dati, documenti e file di risorse.Application content, data, documents, and resource files.
PackageDigitalSignature [Certificato x.509] per l'identificazione, l'autenticazione e la convalida.[X.509 Certificate] for identification, authentication and validation.
PackageRelationship Informazioni aggiunte relative al pacchetto o a una parte specifica.Added information related to the package or a specific part.

PackagePartPackageParts

Un PackagePart ("parte") è una classe astratta che fa riferimento a un oggetto archiviato in un Package.A PackagePart ("part") is an abstract class that refers to an object stored in a Package. In un file ZIP le parti del pacchetto corrispondono ai singoli file archiviati nel file ZIP.In a ZIP file, the package parts correspond to the individual files stored within the ZIP file. ZipPackagePart fornisce l'implementazione predefinita per gli oggetti serializzabili archiviati in un ZipPackage.ZipPackagePart provides the default implementation for serializable objects stored in a ZipPackage. Analogamente a un file system, le parti contenute nel pacchetto vengono archiviate secondo un'organizzazione di directory o cartelle di tipo gerarchico.Like a file system, parts contained in the package are stored in hierarchical directory or "folder-style" organization. Utilizzando le API WPFWPF Packaging, le applicazioni possono scrivere, archiviare e leggere più oggetti PackagePart utilizzando un singolo contenitore di file ZIP.Using the WPFWPF packaging APIs, applications can write, store, and read multiple PackagePart objects using a single ZIP file container.

PackageDigitalSignaturePackageDigitalSignatures

Per la sicurezza, un PackageDigitalSignature ("firma digitale") può essere associato a parti all'interno di un pacchetto.For security, a PackageDigitalSignature ("digital signature") can be associated with parts within a package. Un PackageDigitalSignature incorpora un [509] che fornisce due funzionalità:A PackageDigitalSignature incorporates a [509] that provides two features:

  1. Identifica e autentica l'autore della parte.Identifies and authenticates the originator of the part.

  2. Conferma che la parte non è stata modificata.Validates that the part has not been modified.

La firma digitale non impedisce che una parte venga modificata, ma un controllo di convalida della firma digitale avrà esito negativo se la parte è stata in qualche modo modificata.The digital signature does not preclude a part from being modified, but a validation check against the digital signature will fail if the part is altered in any way. L'applicazione potrà quindi intraprendere l'azione appropriata, ad esempio bloccare l'apertura della parte o notificare all'utente che la parte è stata modificata e non è sicura.The application can then take appropriate action—for example, block opening the part or notify the user that the part has been modified and is not secure.

PackageRelationshipPackageRelationships

Un PackageRelationship ("Relationship") fornisce un meccanismo per associare informazioni aggiuntive al pacchetto o a una parte all'interno del pacchetto.A PackageRelationship ("relationship") provides a mechanism for associating additional information with the package or a part within the package. Una relazione è una funzionalità a livello di pacchetto in grado di associare informazioni aggiuntive a una parte senza modificarne il contenuto effettivo.A relationship is a package-level facility that can associate additional information with a part without modifying the actual part content. L'inserimento di nuovi dati direttamente nel contenuto in genere non è un'operazione pratica:Inserting new data directly into the part content of is usually not practical in many cases:

  • Il tipo effettivo della parte e il relativo schema di contenuto non sono noti.The actual type of the part and its content schema is not known.

  • Anche se è noto, lo schema di contenuto potrebbe non offrire un metodo per l'aggiunta di nuove informazioni.Even if known, the content schema might not provide a means for adding new information.

  • La parte potrebbe essere crittografata o firmata digitalmente, condizioni che impediscono qualsiasi modifica.The part might be digitally signed or encrypted, precluding any modification.

Le relazioni dei pacchetti offrono un metodo individuabile per aggiungere e associare altre informazioni a singole parti o all'intero pacchetto.Package relationships provide a discoverable means for adding and associating additional information with individual parts or with the entire package. Le relazioni dei pacchetti vengono usate per due funzioni principali:Package relationships are used for two primary functions:

  1. Definizione delle relazioni di dipendenza tra le parti.Defining dependency relationships from one part to another part.

  2. Definizione delle relazioni delle informazioni che aggiungono note o altri dati correlati alla parte.Defining information relationships that add notes or other data related to the part.

Un PackageRelationship fornisce un metodo rapido e individuabile per definire le dipendenze e aggiungere altre informazioni associate a una parte del pacchetto o al pacchetto nel suo complesso.A PackageRelationship provides a quick, discoverable means to define dependencies and add other information associated with a part of the package or the package as a whole.

Relazioni di dipendenzaDependency Relationships

Le relazioni di dipendenza vengono usate per descrivere le dipendenze tra le parti.Dependency relationships are used to describe dependencies that one part makes to other parts. Ad esempio, un pacchetto può contenere una parte HTML che include uno o più tag immagine <img>.For example, a package might contain an HTML part that includes one or more <img> image tags. I tag immagine fanno riferimento a immagini posizionate come altre parti interne o esterne al pacchetto (ad esempio accessibili tramite Internet).The image tags refer to images that are located either as other parts internal to the package or external to the package (such as accessible over the Internet). La creazione di un PackageRelationship associato al file HTML rende l'individuazione e l'accesso alle risorse dipendenti in modo rapido e semplice.Creating a PackageRelationship associated with HTML file makes discovering and accessing the dependent resources quick and easy. Un'applicazione browser o del visualizzatore può accedere direttamente alle relazioni tra le parti e avviare immediatamente l'assemblaggio delle risorse dipendenti senza conoscere lo schema, né analizzare il documento.A browser or viewer application can directly access the part relationships and immediately begin assembling the dependent resources without knowing the schema or parsing the document.

Relazioni delle informazioniInformation Relationships

Analogamente a una nota o a un'annotazione, un PackageRelationship può essere utilizzato anche per archiviare altri tipi di informazioni da associare a una parte senza dover modificare effettivamente il contenuto della parte.Similar to a note or annotation, a PackageRelationship can also be used to store other types of information to be associated with a part without having to actually modify the part content itself.

Documenti XPSXPS Documents

Il documento XPS (XML Paper Specification) è un pacchetto che contiene uno o più documenti fissi insieme a tutte le risorse e le informazioni necessarie per il rendering.XML Paper Specification (XPS) document is a package that contains one or more fixed-documents along with all the resources and information required for rendering. XPS è anche il formato nativo di file spooler di stampa di Windows Vista.XPS is also the native Windows Vista print spool file format. Un XpsDocument viene archiviato nel set di dati ZIP standard e può includere una combinazione di componenti XML e binari, ad esempio file di immagine e di tipi di carattere.An XpsDocument is stored in standard ZIP dataset, and can include a combination of XML and binary components, such as image and font files. Gli oggetti PackageRelationship vengono usati per definire le dipendenze tra il contenuto e le risorse necessarie per eseguire il rendering completo del documento.PackageRelationships are used to define the dependencies between the content and the resources required to fully render the document. La progettazione di XpsDocument offre un'unica soluzione di documento ad alta fedeltà che supporta più utilizzi:The XpsDocument design provides a single, high-fidelity document solution that supports multiple uses:

  • Lettura, scrittura e archiviazione del contenuto di documenti statici e risorse come un file singolo, portabile e facile da distribuire.Reading, writing, and storing fixed-document content and resources as a single, portable, and easy-to-distribute file.

  • Visualizzazione di documenti con l'applicazione XPS Viewer.Displaying documents with the XPS Viewer application.

  • Output dei documenti nel formato di output dello spooler di stampa nativo di Windows Vista.Outputting documents in the native print spool output format of Windows Vista.

  • Routing di documenti direttamente a una stampante compatibile con XPS.Routing documents directly to an XPS-compatible printer.

Vedere ancheSee also