【WPF.NET开发】WPF中的文档

这篇具有很好参考价值的文章主要介绍了【WPF.NET开发】WPF中的文档。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文内容

  1. 文档类型
  2. 文档控件和文本布局
  3. 文档打包
  4. XPS 文档

Windows Presentation Foundation (WPF) 提供丰富的文档功能,可创建旨在比前几代 Windows 更易于访问和读取的高保真内容文档。 除增强功能和质量外,WPF 还对文档显示、打包和安全性能提供集成服务。 本主题介绍 WPF 文档类型和文档打包。

1、文档类型

WPF 基于文档用途将文档分成两大类别;这些文档类别分别称为“固定文档”和“流文档”。

固定文档适用于需要精确的“所见即所得”(WYSIWYG) 呈现的应用程序,这与所使用的显示器或打印机硬件无关。 固定文档的典型用途包括桌面发布、字处理和窗体布局,在这些情况下,遵循原始页面设计非常关键。 作为其布局的一部分,固定文档独立于所使用的显示或打印设备来对内容元素进行精确地定位安放。 例如,一个固定文档页面在 96 dpi 显示器上显示的效果与在 600 dpi 激光打印机或 4800 dpi 照相排字机上输出的效果是完全一样的。 虽然文档质量会根据每台设备的功能达到最优化,但是页面布局在所有情况下都保持不变。

比较而言,流文档旨在优化查看和可读性,因此,当易读性是文档的主要使用要求时,最适合使用流文档。 流文档根据运行时变量(例如,窗口大小、设备分辨率和可选的用户首选项)来动态调整和重新排列内容,而不是设置为一个预定义的布局。 网页就是流文档的一个简单示例,网页上的页面内容会动态调整格式以适应当前窗口。 流文档会基于运行时环境来优化用户的查看和阅读体验。 例如,在高分辨率的 19 英寸显示器上或小型 2x3 英寸 PDA 屏幕上,同一流文档会动态调整格式以实现最佳可读性。 此外,流文档还具有很多内置功能,包括搜索、能够优化可读性的查看模式以及更改字体大小和外观的功能。 

2、文档控件和文本布局

.NET Framework 提供一组预生成的控件,可以简化应用程序内固定文档、流文档和常规文本的使用。 固定文档内容的显示是由 DocumentViewer 控件支持的。 流文档内容的显示是由以下三个不同的控件支持的:FlowDocumentReader、FlowDocumentPageViewer 和 FlowDocumentScrollViewer,它们分别映射到不同的用户方案(请参阅以下部分)。 其他 WPF 控件提供简化的布局以支持常规文本的使用(请参阅下面的用户界面中的文本)。

2.1 固定文档控件 - DocumentViewer

DocumentViewer 控件旨在显示 FixedDocument 内容。 DocumentViewer 控件提供直观的用户界面,为常见操作(包括打印输出、复制到剪贴板、缩放和文本搜索功能)提供内置支持。 此控件通过常见的滚动机制提供对页面内容的访问。 像所有 WPF 控件一样,DocumentViewer 支持完整或部分样式调整,这使得控件可以在视觉效果方面几乎与任何应用程序或环境相集成。

DocumentViewer 旨在以只读模式显示内容;不支持对内容进行编辑或修改。

2.2 流文档概述

流文档内容的显示是由以下三个控件支持的:FlowDocumentReader、FlowDocumentPageViewer 和 FlowDocumentScrollViewer。

FlowDocumentReader

FlowDocumentReader 包含使用户能够动态选择各种查看模式的功能,这些查看模式包括单页(一次一页)查看模式、一次两页(书本阅读格式)查看模式和连续滚动(无界限)查看模式。 有关这些查看模式的详细信息,请参阅 FlowDocumentReaderViewingMode。 如果不需要在不同查看模式之间动态切换的功能,则可使用 FlowDocumentPageViewer 和 FlowDocumentScrollViewer,它们提供了固定使用特定查看模式的轻量级流内容查看器。

FlowDocumentPageViewer 和 FlowDocumentScrollViewer

FlowDocumentPageViewer 以一次一页的查看模式显示内容,而 FlowDocumentScrollViewer 以连续滚动模式显示内容。 FlowDocumentPageViewer 和 FlowDocumentScrollViewer 都固定使用特定查看模式。 相比之下,FlowDocumentReader 包含的功能使用户能够动态选择各种查看模式(由 FlowDocumentReaderViewingMode 枚举提供),但代价是需要消耗比 FlowDocumentPageViewer 或 FlowDocumentScrollViewer 更多的资源。

默认情况下,总是显示垂直滚动条,而水平滚动条则在需要时显示。 FlowDocumentScrollViewer 的默认 UI 不包括工具栏;不过,可使用 IsToolBarVisible 属性来启用内置工具栏。

2.3 用户界面中的文本

除可将文本添加到文档外,文本显然还可以用于应用程序 UI(如窗体)中。 WPF 包括多个用于在屏幕中绘制文本的控件。 每个控件都面向不同的方案,并具有自己的功能和限制列表。 通常,当需要支持有限的文本时应使用 TextBlock 元素,例如需要句子简短的用户界面 (UI)。 当需要最少的文本支持时,可以使用 Label。

3、文档打包

System.IO.Packaging API 提供一种有效方式,用于在便于访问、可移植和易于分发的单一容器中组织应用程序数据、文档内容和相关资源。 ZIP 文件是 Package 类型的一个示例,能够将多个对象保存为一个单元。 打包 API 提供一个默认 ZipPackage 实现,此实现设计为在 XML 和 ZIP 文件体系结构中使用开放式打包约定标准。 WPF 打包 API 使得创建包以及在包内存储和访问对象变得更为简单。 存储在 Package 中的对象称为 PackagePart(“部件”)。 包还可包括已签名的数字证书,这些证书可用于标识部件的发信方以及验证包内容是否尚未修改。 包还包括 PackageRelationship 功能,该功能允许将其他信息添加到包中,或在未实际修改现有部件内容的情况下与特定部件相关联。 包服务还支持 Microsoft Windows Rights Management (RM)。

WPF 包体系结构用作大量关键技术的基础:

  • 符合 XML 纸张规范 (XPS) 的 XPS 文档。

  • Microsoft Office“12”开放式 XML 格式文档 (.docx)。

  • 用于个人应用程序设计的自定义存储格式。

XpsDocument 基于打包 API,专为存储 WPF 固定内容文档而设计。 XpsDocument 是自包含文档,可以在查看器中打开、在 DocumentViewer 控件中显示、路由到打印后台或直接输出到与 XPS 兼容的打印机。

以下部分提供有关 WPF 附带的 Package 和 XpsDocument API 的更多信息。

包组件

WPF 打包 API 允许将应用程序数据和文档组织成单个可移植单元。 ZIP 文件是最常见的包类型之一,并且是 WPF 附带的默认包类型。 Package 本身是一个抽象类,可从中使用开放式标准 XML 和 ZIP 文件体系结构来实现 ZipPackage。 Open 方法默认使用 ZipPackage 来创建和使用 ZIP 文件。 包可以包含三种基本类型的项:

展开表

说明
PackagePart 应用程序内容、数据、文档和资源文件。
PackageDigitalSignature [X.509 证书] 用于标识、身份验证和验证。
PackageRelationship 与包或特定部件相关的补充信息。

PackageParts

PackagePart(“部件”)是一个抽象类,指存储在 Package 中的对象。 在 ZIP 文件中,包的各个部件与存储在 ZIP 文件中的各个文件相对应。 ZipPackagePart 为存储在 ZipPackage 中的可序列化对象提供默认实现。 与文件系统类似,包中包含的部件存储在分层目录或“文件夹样式”组织中。 使用 WPF 打包 API,应用程序可以使用单一 ZIP 文件容器写入、存储和读取多个 PackagePart 对象。

PackageDigitalSignatures

为安全起见,PackageDigitalSignature(“数字签名”)可以与包内的各部件关联。 PackageDigitalSignature 包含提供以下两个功能的 [509]:

  1. 标识部件的发信方并对其进行身份验证。

  2. 验证部件是否尚未被修改。

数字签名不会阻止修改部件,但如果该部件已经以任何方式发生改变,则对该数字签名的验证检查将失败。 然后应用程序可采取适当的操作(例如,阻止打开部件,或通知用户该部件已修改,是不安全的)。

PackageRelationships

PackageRelationship(“关系”)提供一种机制,用于将其他信息与包或包内的部件关联。 关系是一种包级别的设备,可以在未修改实际部件内容的情况下将其他信息与部件关联。 在许多情况下,直接向部件内容中插入新数据通常是不可行的:

  • 部件及其内容架构的实际类型未知。

  • 即使已知,内容架构可能也不会提供添加新信息的方式。

  • 部件可能已进行数字签名或加密,不能进行任何修改。

包关系提供一种可检测到的方式,用于添加其他信息并将该信息与各个部件或整个包关联。 包关系具有两种主要功能:

  1. 定义一个部件与另一个部件之间的依赖关系。

  2. 定义添加注释或与部件相关的其他数据的信息关系。

PackageRelationship 提供一种快速、可检测到的方式来定义依赖关系,并添加与包的一个部件或整个包相关联的其他信息。

依赖关系

依赖关系用于描述一个部件对其他部件的依赖性。 例如,一个包可能包含一个 HTML 部件,该部件包含一个或多个 <img> 图像标记。 此图像标记指的是作为包的其他内部部件或外部部件(可通过 Internet 访问)定位的图像。 通过创建与 HTML 文件关联的 PackageRelationship,可以快速轻松地发现和访问从属资源。 浏览器或查看器应用程序可以直接访问部件关系,并在无需了解架构或未分析文档的情况下立即开始汇编从属资源。

信息关系

与注释或批注类似,PackageRelationship 还可以用于存储要与部件关联的其他类型的信息,而不必实际修改部件内容本身。

4、XPS 文档

XML 纸张规范 (XPS) 文档是一个包,其中包含一个或多个固定文档以及呈现操作所需的所有资源和信息。 XPS 还是 Windows Vista 的本机后台打印文件格式。 XpsDocument 存储在标准 ZIP 数据集中,可以包含 XML 和二进制组件的组合,比如图像和字体文件。 PackageRelationships 用于定义内容和完全呈现文档所需的资源之间的依赖关系。 XpsDocument 设计提供单一的高保真文档解决方案,支持以下多种用途:

  • 将固定文档内容和资源读取、写入和存储为单个可移植且易于分发的文件。

  • 使用 XPS 查看器应用程序显示文档。

  • 以 Windows Vista 的本机后台打印输出格式输出文档。

  • 将文档直接路由到与 XPS 兼容的打印机。文章来源地址https://www.toymoban.com/news/detail-795855.html

到了这里,关于【WPF.NET开发】WPF中的文档的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【WPF.NET开发】WPF中的XAML资源

    使用 XAML 中的资源 静态和动态资源 静态资源 动态资源 样式、DataTemplate 和隐式键 资源是可以在应用中的不同位置重复使用的对象。 资源的示例包括画笔和样式。 本概述介绍如何使用 Extensible Application Markup Language (XAML) 中的资源。 你还可以使用代码创建和访问资源。  备注

    2024年01月17日
    浏览(63)
  • 【WPF.NET开发】预览事件

    先决条件 预览标记为“已处理”的事件 通过控件解决事件禁止问题 预览事件,也称为隧道事件,是从应用程序根元素向下遍历元素树到引发事件的元素的路由事件。 引发事件的元素在事件数据中报告为Source 。 并非所有事件场景都支持或需要预览事件。 本文介绍了预览事件

    2024年02月03日
    浏览(48)
  • 【WPF.NET开发】弱事件模式

    先决条件 为什么要实现弱事件模式? 应该由谁实现弱事件模式? 如何实现弱事件模式 在应用程序中,附加到事件源的处理程序可能不会与将处理程序附加到源的侦听器对象一同销毁。 这种情况下会导致内存泄漏。 Windows Presentation Foundation (WPF) 引入了可用于解决此问题的设

    2024年02月03日
    浏览(40)
  • 【WPF.NET开发】OpenType字体

    OpenType 字体格式 变量 大写字母 连字 花体 备用项 数字样式 版式类 本主题概述了 Windows Presentation Foundation (WPF) 中 OpenType 字体技术的一些主要功能。 OpenType 字体格式是 TrueType® 字体格式的扩展,增加了对 PostScript 字体数据的支持。 OpenType 字体格式由 Microsoft 和 Adobe Corporatio

    2024年01月16日
    浏览(41)
  • .NET 8 中的 WPF File Dialog 改进

    作者:Dipesh Kumar 排版:Alan Wang 我们很高兴宣布从 .NET 8 Preview 7 开始,对 WPF 中的通用文件对话框 API 进行了一系列新的改进。其中包括迄今为止存储库中投票最多的 API 建议 – 允许用户选择文件夹的 OpenFolderDialog 控件 – 以及文件对话框上支持新的用户场景的几个新属性,例

    2024年02月07日
    浏览(39)
  • VisualStudio[WPF/.NET]基于CommunityToolkit.Mvvm架构开发

    项目模板选择如下: 暂时随机填一个目标框架,待会改: 双击“解决方案资源管理器”中项目CU-APP, 打开项目工程文件CU-APP.csproj, 修改目标框架 TargetFramework 为.net framework 4.7.2 ;  C#语言版本 LangVersion 为  9.0  \\\"工具\\\" - \\\"NuGet包管理器\\\",“管理解决方案的NuGet程序包(N)”,  或者,

    2024年02月07日
    浏览(40)
  • .NET6: 开发基于WPF的摩登三维工业软件 (7)

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 做为一个摩登的工业软件,提供可编程的脚本能力是必不可少的能力。脚本既可以方便用户进行二次开发,也对方便对程序进行自动化测试。本文将结合

    2024年02月05日
    浏览(46)
  • .net wpf程序 移花接木

    最近在研究C# .net桌面程序。非常有趣 软件是国外作者写的 公司要求修改翻译 从最初的开源变成闭源再到加壳. 一路让我这个小小的职员好蛋疼. 软件是VS2015 C# WPF 程序 在不脱壳的情况下 实现挂钩类托管函数 遍历WPF控件汉化 首先通过各种手段脱壳目标程序,哪怕是不能运行

    2024年02月07日
    浏览(37)
  • WPF .NET 7.0学习整理(一)

    参照文档进行不系统的整理,看到那写到那O.o DependencyProperty:使用专有字段支持属性的标准模式的替代方法。 DependencyObject:定义了可以注册和拥有依赖属性的基类。 属性及其支持性 DependencyProperty 字段的命名约定非常重要。 字段总是与属性同名,但其后面追加了 Property 后

    2024年02月09日
    浏览(34)
  • WPF C# .NET7 基础学习

    学习视频地址:https://www.bilibili.com/video/BV1hx4y1G7C6?p=3vd_source=986db470823ebc16fe0b3d235addf050 开发工具:Visual Studio 2022 Community 基础框架:.Net 6.0 下载创建过程略 .Net和.Framework 区别是Net是依赖项,Framework是引用 1.定义一个命名空间, 最常用 不只包括using namespace,还用开头使用的usin

    2024年02月10日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包