共用方式為


WPF 中的文件

Windows Presentation Foundation (WPF) 提供廣泛的檔功能,可讓您建立高逼真度的內容,其設計目的是比前幾代 Windows 更容易存取和讀取。 除了增強的功能和品質之外,WPF 也提供檔顯示、封裝和安全性的整合式服務。 本主題提供 WPF 檔案類型和檔封裝的簡介。

文件的類型

WPF 會根據檔的預期用途,將檔分成兩個廣泛的類別:這些檔類別稱為「固定檔」和「流程檔」。

固定檔適用于需要精確「您所看到的內容」(WYSIWYG)簡報的應用程式,與使用的顯示器或印表機硬體無關。 固定格式文件一般用於桌上出版、文書處理和表單配置,必須嚴格遵循原始頁面設計。 固定格式文件會在其配置中維持內容項目的精確位置,不受使用中的顯示器或列印裝置影響。 例如,在 96 dpi 顯示器上檢視的固定格式文件頁面,不論是輸出到 600 dpi 雷射印表機或輸出到 4800 dpi 相紙輸出機,看起來都完全一樣。 文件品質會充分發揮各裝置的性能,但頁面配置永遠相同。

相較之下,非固定格式文件的設計用意是為了將檢視及可讀性最佳化;如果容易閱讀是主要的文件使用考量,則最適合使用非固定格式文件。 非固定格式文件並不會設為某種預先定義的配置,而是會根據執行階段變數 (例如視窗大小、裝置解析度和選擇性的使用者喜好設定),動態調整及自動重排其內容。 網頁即是一個簡單的非固定格式文件範例,其中的頁面內容會動態進行格式化,以符合目前視窗大小。 非固定格式文件會根據執行階段環境,讓使用者擁有最佳的檢視和閱讀體驗。 例如,同一份非固定格式文件在高解析度 19 吋顯示器或小型 2x3 吋 PDA 螢幕上都會動態重新格式化,以獲得最佳可讀性。 此外,非固定格式文件具備許多內建功能,包括搜尋、將可讀性最佳化的檢視模式,以及變更字型大小與外觀的能力。 如需非固定格式文件的說明、範例和深入資訊,請參閱非固定格式文件概觀

文件控制項和文字配置

.NET Framework 提供一組預先建置的控制項,可簡化在應用程式中使用固定檔、流程檔和一般文字。 使用 DocumentViewer 控制項支援顯示固定檔內容。 流程檔內容的顯示受到三個不同的控制項支援: FlowDocumentReaderFlowDocumentPageViewer ,以及 FlowDocumentScrollViewer 對應至不同使用者案例的控制項(請參閱以下各節)。 其他 WPF 控制項提供簡化的版面配置來支援一般文字用途(請參閱 下方使用者介面 中的文字)。

固定格式文件控制項 - DocumentViewer

控制項 DocumentViewer 是設計來顯示 FixedDocument 內容。 控制項 DocumentViewer 提供直覺式使用者介面,提供內建支援一般作業,包括列印輸出、複製到剪貼簿、縮放和文字搜尋功能。 此控制項可透過常見的捲動機制,來存取多頁內容。 與所有 WPF 控制項一樣, DocumentViewer 支援完整或部分的 restyling,這可讓控制項以視覺化方式整合到幾乎任何應用程式或環境中。

DocumentViewer 是設計成以唯讀方式顯示內容;無法編輯或修改內容,且不受支援。

非固定格式文件控制項

注意

如需流程檔功能以及如何建立它們的詳細資訊,請參閱 流程檔概觀

三個控制項支援顯示流程檔內容: FlowDocumentReaderFlowDocumentPageViewerFlowDocumentScrollViewer

FlowDocumentReader

FlowDocumentReader 包含可讓使用者動態選擇各種檢視模式的功能,包括單頁(一次分頁)檢視模式、一次兩頁(書籍閱讀格式)檢視模式,以及連續捲動(無底)檢視模式。 如需這些檢視模式的詳細資訊,請參閱 FlowDocumentReaderViewingMode 。 如果您不需要在不同檢視模式之間動態切換的能力, FlowDocumentPageViewer 並提供 FlowDocumentScrollViewer 在特定檢視模式中固定的較輕量流量內容檢視器。

FlowDocumentPageViewer 和 FlowDocumentScrollViewer

FlowDocumentPageViewer 會在一次頁面檢視模式中顯示內容,同時 FlowDocumentScrollViewer 以連續捲動模式顯示內容。 FlowDocumentPageViewerFlowDocumentScrollViewer 都固定為特定的檢視模式。 FlowDocumentReader與 比較 ,其中包含的功能可讓使用者動態選擇各種檢視模式(如 列舉所提供的 FlowDocumentReaderViewingMode ),代價是比 或 FlowDocumentScrollViewer 更耗 FlowDocumentPageViewer 用資源。

預設一定會顯示垂直捲軸,而水平捲動則會視需要顯示。 的預設 UI FlowDocumentScrollViewer 不包含工具列;不過, IsToolBarVisible 屬性可用來啟用內建工具列。

使用者介面中的文字

除了將文字新增至文件,您顯然也能在表單等應用程式 UI 中使用文字。 WPF 包含多個控制項,可用來將文字繪製到畫面。 每個控制項都是不同案例的目標,且有自己的功能與限制清單。 一般而言, TextBlock 在需要有限的文字支援時,應該使用 元素,例如使用者介面 (UI) 中的簡短句子。 Label 當需要最少的文字支援時,可以使用。 如需詳細資訊,請參閱 TextBlock 概觀

文件封裝

System.IO.PackagingAPI 提供有效率的方法,可組織單一容器中的應用程式資料、檔內容和相關資源,且易於存取、可攜且易於散發。 ZIP 檔案是一種 Package 類型範例,能夠將多個物件保存為單一單位。 封裝 API 提供使用 OPEN Packaging 慣例標準搭配 XML 和 ZIP 檔案架構所設計的預設 ZipPackage 實作。 WPF 封裝 API 可讓您輕鬆地建立套件,以及儲存和存取其中的物件。 儲存在 中的 Package 物件稱為 PackagePart 「部分」。 封裝也可以包含簽署的數位憑證,該憑證可用來識別組件的建立者,以及驗證封裝內容是否未遭修改。 套件也包含一項 PackageRelationship 功能,可允許將其他資訊新增至套件或與特定元件相關聯,而不需要實際修改現有元件的內容。 套件服務也支援 Microsoft Windows Rights Management(RM)。

WPF 套件架構可作為一些重要技術的基礎:

  • 符合 XML 紙張規格 (XPS) 的 XPS 檔。

  • Microsoft Office "12" Open XML 格式文件 (.docx)。

  • 適用於您自己應用程式設計的自訂儲存格式。

根據封裝 API, XpsDocument 專為儲存 WPF 固定內容檔而設計。 XpsDocument是一個獨立檔,可在檢視器中開啟、顯示在控制項中 DocumentViewer 、路由傳送至列印多工緩衝處理,或直接輸出至 XPS 相容的印表機。

下列各節提供 WPF 所提供的 和 XpsDocument API 的其他資訊 Package

封裝元件

WPF 封裝 API 可讓應用程式資料和檔組織成單一可攜式單位。 ZIP 檔案是最常見的套件類型之一,而且是 WPF 所提供的預設套件類型。 Package 本身是抽象類別,使用 ZipPackage 開放式標準 XML 和 ZIP 檔案架構實作。 Open方法預設會使用 ZipPackage 來建立和使用 ZIP 檔案。 一個封裝可以包含三種基本項目類型:

項目 說明
PackagePart 應用程式內容、資料、文件和資源檔。
PackageDigitalSignature 用於識別、驗證 (Authentication 和 Validation) 的 [X.509 憑證]。
PackageRelationship 與封裝或特定組件相關的新增資訊。

PackageParts

PackagePart(「part」) 是一個抽象類別,參考儲存在 中的 Package 物件。 在 ZIP 檔案中,封裝組件會對應至儲存在 ZIP 檔案中的個別檔案。 ZipPackagePart 提供儲存在 中 ZipPackage 之可序列化物件的預設實作。 就像檔案系統,封裝中包含的組件會儲存在階層式目錄或「資料夾樣式」的組織中。 使用 WPF 封裝 API,應用程式可以使用單一 ZIP 檔案容器來寫入、儲存及讀取多個 PackagePart 物件。

PackageDigitalSignatures

為了安全起因, PackageDigitalSignature 可以將 (「數位簽章」) 與套件內的元件產生關聯。 PackageDigitalSignature包含提供兩個功能的 [509] :

  1. 識別並驗證組件的建立者。

  2. 驗證組件未遭修改。

數位簽章不會防止組件遭到修改,但如果組件有任何改變,對於數位簽章的驗證檢查就會失敗。 應用程式可以做出一些適當的回應,像是防止開啟組件,或通知使用者該組件已遭修改,因此並不安全。

PackageRelationships

PackageRelationship(「relationship」) 提供機制,以便將其他資訊與封裝或封裝內的元件產生關聯。 關聯性是封裝層級功能,可將其他資訊與組件產生關聯,而不需要修改實際組件內容。 直接將新資料插入組件內容,在許多情況下通常並不可行:

  • 不知道組件及其內容結構描述的實際類型。

  • 即使知道,內容結構描述也可能不會提供新增資訊的方法。

  • 組件可能會進行數位簽署或加密,以免遭到任何修改。

封裝關聯性提供一個顯而易見的方法,來新增其他資訊,並將此資訊與個別組件或整個封裝產生關聯。 封裝關聯性可用於兩項主要功能:

  1. 定義某個組件與另一個組件的相依性關聯性。

  2. 定義新增附註或組件之其他相關資料的資訊關聯性。

PackageRelationship提供快速、可探索的方法,以定義相依性,並新增與封裝或整個套件相關的其他資訊。

相依性關聯性

相依性關聯性可用來描述某個組件與其他組件的相依性。 例如,套件可能包含包含一或多個 < img > 影像標籤的 HTML 元件。 影像標記所參考的影像,就是位於封裝內部或外部 (例如可透過網際網路存取) 的其他組件。 PackageRelationship建立與 HTML 檔案相關聯的 可讓探索和存取相依資源變得快速且容易。 瀏覽器或檢視器應用程式可以直接存取組件關聯性,並立即開始組合相依資源,而不需要知道結構描述或剖析文件。

資訊關聯性

與附注或批註類似, PackageRelationship 也可以用來儲存與元件相關聯的其他類型的資訊,而不需要實際修改元件內容本身。

XPS 文件

XML 紙張規格 (XPS) 檔是一個套件,其中包含一或多個固定檔,以及轉譯所需的所有資源和資訊。 XPS 也是原生 Windows Vista 列印多工緩衝處理檔案格式。 XpsDocument儲存在標準 ZIP 資料集中,而且可以包含 XML 和二進位元件的組合,例如影像和字型檔案。 PackageRelationships 可用來定義完整呈現文件所需的內容和資源之間的相依性。 此 XpsDocument 設計提供支援多個用途的單一高逼真度檔解決方案:

  • 將固定格式文件內容和資源當做單一可攜式且容易散發的檔案,進行讀取、寫入及儲存。

  • 使用 XPS Viewer 應用程式顯示檔。

  • 將檔輸出為 Windows Vista 的原生列印多工緩衝處理輸出格式。

  • 將檔直接路由傳送至 XPS 相容的印表機。

另請參閱