Документы в WPF
Windows Presentation Foundation (WPF) предлагает широкий спектр функций документов, позволяющих создавать содержимое с высокой точностью, предназначенное для более легкого доступа и чтения, чем в предыдущих поколениях Windows. Помимо расширенных возможностей и качества WPF также предоставляет интегрированные службы для отображения документов, упаковки и безопасности. В этом разделе приведены общие сведения о типах документов WPF и упаковке документов.
Типы документов
WPF делит документы на две широкие категории на основе их предполагаемого использования; эти категории документов называются "фиксированными документами" и "документами потока".
Фиксированные документы предназначены для приложений, требующих точного представления "то, что вы видите, то вы и получите" (WYSIWYG), независимо от используемого оборудования дисплея или принтера. Типичные варианты использования для фиксированных документов включают в себя настольные издательские системы, обработку текста и разметку форм, где соблюдение исходного дизайна страницы имеет решающее значение. В рамках его макета фиксированный документ поддерживает точное размещение элементов содержимого независимо от используемого устройства отображения или печати. Например, страница документа с фиксированной завершенностью, просматриваемая на дисплее с разрешением 96 dpi, будет выглядеть идентично при выводе на лазерный принтер с разрешением 600 dpi, как и при выводе на фотонаборное устройство с разрешением 4800 dpi. Макет страницы остается одинаковым во всех случаях, в то время как качество документа максимально увеличивается до возможностей каждого устройства.
По сравнению с другими типами, потоковые документы предназначены для оптимизации отображения и удобочитаемости, и их лучше всего использовать, когда удобство чтения является основным условием потребления документа. Вместо того чтобы быть закрепленными в одном предопределенном макете, поточные документы динамически настраивают и перераспределяют свое содержимое на основе переменных времени выполнения, таких как размер окна, разрешение устройства и пользовательские предпочтения. Веб-страница — это простой пример документа потока, в котором содержимое страницы динамически отформатировано в соответствии с текущим окном. На основе среды выполнения, потоковые документы оптимизируют просмотр и чтение для пользователя. Например, тот же потоковый документ будет динамически переформатироваться для оптимальной удобочитаемости на 19-дюймовом дисплее с высоким разрешением или небольшом 2x3-дюймовом экране КПК. Кроме того, документы потока имеют ряд встроенных функций, включая поиск, режимы просмотра, которые оптимизируют удобочитаемость, а также возможность изменять размер и внешний вид шрифтов. Смотрите раздел Обзор документа потока для иллюстраций, примеров и подробной информации о документах потока.
Элементы управления документами и макет текста
Платформа .NET Framework предоставляет набор готовых элементов управления, упрощающих использование фиксированных документов, документов потока и общего текста в приложении. Отображение фиксированного содержимого документа поддерживается с помощью элемента управления DocumentViewer. Отображение содержимого документа потока поддерживается тремя различными элементами управления: FlowDocumentReader, FlowDocumentPageViewerи FlowDocumentScrollViewer, которые сопоставляют с различными сценариями пользователей (см. разделы ниже). Другие элементы управления WPF предоставляют упрощенный макет для поддержки общего текста (см. текст в пользовательском интерфейсениже).
Исправлено управление документами — Просмотрщик документов
Элемент управления DocumentViewer предназначен для отображения содержимого FixedDocument. Элемент управления DocumentViewer предоставляет интуитивно понятный пользовательский интерфейс, который обеспечивает встроенную поддержку распространенных операций, включая выходные данные печати, копирование в буфер обмена, масштабирование и функции поиска текста. Элемент управления предоставляет доступ к страницам содержимого через знакомый механизм прокрутки. Как и все элементы управления WPF, DocumentViewer поддерживает полное или частичное изменение стиля, что позволяет визуально вписать элемент управления в практически любое приложение или среду.
DocumentViewer предназначено для отображения содержимого только для чтения; Редактирование или изменение содержимого недоступно и не поддерживается.
Элементы управления документами потока
Заметка
Дополнительные сведения о функциях потокового документа и их создании см. в обзоре потокового документа.
Отображение содержимого документа потока поддерживается тремя элементами управления: FlowDocumentReader, FlowDocumentPageViewerи FlowDocumentScrollViewer.
FlowDocumentReader
FlowDocumentReader включает функции, позволяющие пользователю динамически выбирать между различными режимами просмотра, включая режим отдельной страницы (по одной странице), двухстраничный режим (формат чтения книг) и режим непрерывной прокрутки. Дополнительные сведения об этих режимах просмотра см. в FlowDocumentReaderViewingMode. Если вам не нужна возможность динамически переключаться между различными режимами просмотра, FlowDocumentPageViewer и FlowDocumentScrollViewer предоставляют облегчённые средства просмотра контента, зафиксированные в определённом режиме просмотра.
FlowDocumentPageViewer и FlowDocumentScrollViewer
FlowDocumentPageViewer отображает содержимое в режиме просмотра по одной странице за раз, в то время как FlowDocumentScrollViewer отображает содержимое в режиме непрерывной прокрутки. И FlowDocumentPageViewer, и FlowDocumentScrollViewer зафиксированы в определенном режиме просмотра. Сравните с FlowDocumentReader, которая включает функции, которые позволяют пользователю динамически выбирать между различными режимами просмотра (как указано в перечислении FlowDocumentReaderViewingMode), за счет более интенсивного использования ресурсов, чем FlowDocumentPageViewer или FlowDocumentScrollViewer.
По умолчанию вертикальная полоса прокрутки всегда отображается, а горизонтальная полоса прокрутки становится видимой при необходимости. Пользовательский интерфейс по умолчанию для FlowDocumentScrollViewer не включает панель инструментов; однако свойство IsToolBarVisible можно использовать для включения встроенной панели инструментов.
Текст в пользовательском интерфейсе
Помимо добавления текста в документы, текст, очевидно, можно использовать в пользовательском интерфейсе приложения, например в формах. WPF включает несколько элементов управления для рисования текста на экране. Каждый элемент управления предназначен для другого сценария и имеет собственный список функций и ограничений. Как правило, элемент TextBlock следует использовать, если требуется ограниченная поддержка текста, например краткое предложение в пользовательском интерфейсе. Label можно использовать, если требуется минимальная поддержка текста. Дополнительные сведения см. в обзоре элемента TextBlock.
Упаковка документов
API-интерфейсы System.IO.Packaging предоставляют эффективные средства для упорядочивания данных приложения, содержимого документов и связанных ресурсов в одном контейнере, который прост в доступе, переносимом и легко распространять. ZIP-файл — это пример типа Package, способный хранить несколько объектов в виде одной единицы. API упаковки предоставляют реализацию по умолчанию ZipPackage, разработанную с использованием стандарта Open Packaging Conventions с архитектурой XML и ZIP-файла. API упаковки WPF упрощают создание пакетов и хранение и доступ к объектам в них. Объект, хранящийся в Package, называется PackagePart (часть). Пакеты также могут включать подписанные цифровые сертификаты, которые можно использовать для идентификации инициатора части и проверки того, что содержимое пакета не было изменено. Пакеты также включают функцию PackageRelationship, которая позволяет добавлять дополнительные сведения в пакет или связываться с определенными частями, не изменяя содержимое существующих частей. Службы пакетов также поддерживают Microsoft Windows Rights Management (RM).
Архитектура пакета WPF служит основой для ряда ключевых технологий:
Документы XPS, соответствующие спецификации XML Paper (XPS).
Документы формата Open XML в Microsoft Office "12" (.docx).
Пользовательские форматы хранилища для собственного дизайна приложения.
На основе API упаковки XpsDocument специально предназначен для хранения документов фиксированного содержимого WPF. XpsDocument — это автономный документ, который можно открыть в средстве просмотра, отобразить в элементе управления DocumentViewer, направить в спулер печати или вывести непосредственно на принтер, совместимый с XPS.
В следующих разделах содержатся дополнительные сведения о Package и XpsDocument API, предоставляемых WPF.
Компоненты пакета
API упаковки WPF позволяют упорядочивать данные и документы приложения в одну переносимую единицу. ZIP-файл является одним из наиболее распространенных типов пакетов и является типом пакета по умолчанию, предоставляемым WPF. Package является абстрактным классом, из которого ZipPackage реализуется с использованием архитектуры XML и ZIP-файлов открытого стандарта. Метод Open использует ZipPackage для создания и использования ZIP-файлов по умолчанию. Пакет может содержать три основных типа элементов:
Элемент | Описание |
---|---|
PackagePart | Содержимое приложения, данные, документы и файлы ресурсов. |
PackageDigitalSignature | [Сертификат X.509] для идентификации, проверки подлинности и валидации. |
PackageRelationship | Добавлены сведения, связанные с пакетом или определенной частью. |
ЧастиПакета
PackagePart (часть) — это абстрактный класс, который ссылается на объект, хранящийся в Package. В ZIP-файле части пакета соответствуют отдельным файлам, хранящимся в ZIP-файле. ZipPackagePart предоставляет реализацию по умолчанию для сериализуемых объектов, хранящихся в ZipPackage. Как и файловая система, части, содержащиеся в пакете, хранятся в иерархическом каталоге или организации в стиле папок. Используя API упаковки WPF, приложения могут записывать, хранить и читать несколько объектов PackagePart с помощью одного контейнера ZIP-файла.
PackageDigitalSignatures
Для обеспечения безопасности PackageDigitalSignature (цифровая подпись) может быть применена к элементам пакета. PackageDigitalSignature включает в себя [509], предоставляющий две функции:
Определяет и проверяет подлинность исходного элемента.
Проверяет, что часть не была изменена.
Цифровая подпись не исключает изменения части, но проверка на соответствие цифровой подписи завершится ошибкой, если часть изменяется каким-либо образом. Затем приложение может предпринять соответствующее действие, например блокировать открытие части или уведомлять пользователя о том, что часть была изменена и не является безопасной.
СвязиПакетов
PackageRelationship (связь) предоставляет механизм связывания дополнительных сведений с пакетом или частью пакета. Связь — это объект уровня пакета, который может связывать дополнительные сведения с частью без изменения фактического содержимого части. Вставка новых данных непосредственно в содержимое части обычно не является практической во многих случаях:
Фактический тип части и ее схемы содержимого не известен.
Даже если известно, схема содержимого может не предоставлять средства для добавления новых сведений.
Часть может быть цифрово подписана или зашифрована, исключая любые изменения.
Связи пакетов предоставляют средства обнаружения для добавления и связывания дополнительных сведений с отдельными частями или всего пакета. Связи пакетов используются для двух основных функций:
Определение связей зависимостей от одной части к другой.
Определение информационных связей, которые добавляют заметки или другие данные, относящиеся к детали.
PackageRelationship предоставляет быстрые, обнаруживаемые средства для определения зависимостей и добавления других сведений, связанных с частью пакета или пакета в целом.
Связи зависимостей
Связи зависимостей используются для описания зависимостей, которые одна часть делает с другими частями. Например, пакет может содержать HTML-часть, включающую один или несколько тегов изображений <img>. Теги изображений ссылаются на изображения, расположенные как другие части, внутренние в пакете или внешние для пакета (например, доступные через Интернет). Создание PackageRelationship, связанной с HTML-файлом, упрощает обнаружение и доступ к зависимым ресурсам. Приложение браузера или средства просмотра может напрямую получить доступ к связям частей и немедленно начать сборку зависимых ресурсов, не зная схему или анализ документа.
Информационные отношения
Аналогично заметке или аннотации, PackageRelationship также можно использовать для хранения других типов информации, чтобы ассоциировать с частью без необходимости фактического изменения содержимого части.
Документы XPS
Документ спецификации XML Paper (XPS) — это пакет, содержащий один или несколько фиксированных документов вместе со всеми ресурсами и сведениями, необходимыми для отрисовки. XPS также является родным форматом файла очереди печати Windows Vista. XpsDocument хранится в стандартном zip-наборе данных и может включать сочетание XML-и двоичных компонентов, таких как файлы изображений и шрифтов. PackageRelationships используются для определения зависимостей между содержимым и ресурсами, необходимыми для полного отображения документа. Дизайн XpsDocument предлагает единое высокоточное документарное решение, которое поддерживает несколько вариантов использования.
Чтение, запись и хранение содержимого и ресурсов фиксированного документа в виде одного, переносимого и удобного для распространения файлов.
Отображение документов с помощью приложения средства просмотра XPS.
Вывод документов в родном формате выходных данных диспетчера печати Windows Vista.
Маршрутизация документов непосредственно на принтер, совместимый с XPS.
См. также
- FixedDocument
- FlowDocument
- XpsDocument
- ZipPackage
- ZipPackagePart
- PackageRelationship
- DocumentViewer
- Текст
- Обзор документа потока
- Обзор печати
- Сериализация документов и хранение данных
.NET Desktop feedback