WPF TextElement内容模型简介(转)
本内容模型概述描述了 TextElement 支持的内容。 Paragraph 类是 TextElement 的类型。 内容模型描述哪些对象/元素可以包含在其他对象/元素中。 本概述汇总了派生自 TextElement 的对象所使用的内容模型。 有关更多信息,请参见流文档概述。
下面的关系图对派生自 TextElement 的类所使用的内容模型,以及其他非 TextElement 类如何适应该模型进行了汇总。

如上面的关系图所示,元素可以具有的子元素不一定通过某个类派生自 Block 类还是 Inline 类来确定。 例如,Span(从 Inline 派生的类)只能具有 Inline 子元素,但是 Figure(也是从 Inline 派生的类)只能具有 Block 子元素。 因此,关系图可用于快速地确定哪些元素可以包含在其他元素中。 例如,我们可以使用关系图来确定如何构造 RichTextBox 的流内容。
一个 RichTextBox 必须包含一个 FlowDocument,而后者又必须包含一个派生自 Block 的对象。 下图是上述关系图中的相应一部分。

到此为止,标记可能类似于所示内容。
按照该关系图,存在多个可以从中进行选择的 Block 元素,包括 Paragraph、Section、Table、List 和 BlockUIContainer(请参见上图中从 Block 派生的类)。 假设我们需要一个 Table。 按照上面的关系图,一个 Table 包含一个 TableRowGroup,后者包含多个TableRow 元素,这些行元素又包含多个 TableCell 元素,而这些单元格元素又包含一个从 Block 派生的对象。 下图是本文档内第一个关系图中与 Table 相对应的一部分。

下面是相应的标记。
同样,TableCell 下需要一个或多个 Block 元素。 为简单起见,我们在单元格内部放置一些文本。 可以使用一个带有 Run 元素的Paragraph 来实现该操作。 下图是本文档内第一个关系图中的一部分,由该图可见,Paragraph 可以包含一个 Inline 元素,而 Run(一个 Inline 元素)只能包含纯文本。


下面是标记中的完整示例。
TextElement 的内容由集合组成,因此,可以通过处理这些集合来以编程方式操作 TextElement 对象的内容。 从 TextElement 派生的类可以使用以下三个不同的集合:
InlineCollection:表示 Inline 元素的集合。 InlineCollection 定义 Paragraph、Span 和 TextBlock 元素允许使用的子内容。
BlockCollection:表示 Block 元素的集合。 BlockCollection 定义 FlowDocument、Section、ListItem、TableCell、Floater 和Figure 元素允许使用的子内容。
ListItemCollection:一个流内容元素,表示有序或无序 List 中的特定内容项。
可以从这些集合中,分别使用 Inline、Block 和 ListItem 的属性来进行操作(添加或移除项)。 下面的示例演示如何使用 Inline 属性来操作 Span 的内容。
注意 |
|---|
|
Table 使用多个集合来操作其内容,但是这里我们不对其进行说明。 有关更多信息,请参见表概述。 |
下面的示例创建一个新 Span 对象,然后使用 Add 方法添加两个文本运行,作为 Span 的子内容。
Span spanx = new Span();
spanx.Inlines.Add(new Run("A bit of text content..."));
spanx.Inlines.Add(new Run("A bit more text content..."));
下面的示例创建一个新 Run 元素并将其插入到 Span 的开始位置。
Run runx = new Run("Text to insert...");
spanx.Inlines.InsertBefore(spanx.Inlines.FirstInline, runx);
下面的示例删除 Span 中的最后一个 Inline 元素。
spanx.Inlines.Remove(spanx.Inlines.LastInline);
下面的示例从 Span 中清除所有内容(Inline 元素)。
spanx.Inlines.Clear();
WPF TextElement内容模型简介(转)的更多相关文章
- jvm-垃圾回收gc简介+jvm内存模型简介
gc是jvm自动执行的,自动清除jvm内存垃圾,无须人为干涉,虽然方便了程序员的开发,但同时增加了开发人员对内存的不可控性. 1.jvm内存模型简介 jvm是在计算机系统上又虚拟出来的一个伪计算机系统 ...
- CSS box-flex属性,然后弹性盒子模型简介
今天做项目的时候发现一个css3的新属性flex 一.什么是flex 它的作用是能够按照设置好的规则来排列容器内的项目,而不必去计算每一个项目的宽度和边距.甚至是在容器的大小发生改变的时候,都可以重新 ...
- WPF的线程模型
原文:WPF的线程模型 WPF的线程模型 周银辉 谈到多线程,很多人对其可能都不太有好感,觉得麻烦与易出错.所以我们不排除有这样的情况:假设我对“多线程”.“异步”这些字眼潜意识 ...
- spring 事件驱动模型简介
事件驱动模型简介 事件驱动模型也就是我们常说的观察者,或者发布-订阅模型:理解它的几个关键点: 首先是一种对象间的一对多的关系:最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方): ...
- WPF中的图像处理简介
原文:WPF中的图像处理简介 和Winform中的GDI+相比,WPF提供了一组新的API用于显示和编辑图像.新API特点如下: 适用于新的或专用图像格式的扩展性模型. 对包括位图 (BMP).联合图 ...
- WPF中的资源简介、DynamicResource与StaticResource的区别
原文:WPF中的资源简介.DynamicResource与StaticResource的区别 什么叫WPF的资源(Resource)?资源是保存在可执行文件中的一种不可执行数据.在WPF的资源中,几乎 ...
- SNF快速开发平台2019-权限管理模型简介-权限都在这里
1.1 权限的概念 权限是指为了保证职责的有效履行,任职者必须具备的,对某事项进行决策的范围和程度.它常常用“具有批准……事项的权限”来进行表达.例如,具有批准预算外5000元以内的礼品费支出的 ...
- Linux 网络 I/O 模型简介(图文)(转载)
Linux 网络 I/O 模型简介(图文)(转载) 转载:http://blog.csdn.net/anxpp/article/details/51503329 1.介绍 Linux 的内核将所有外部 ...
- css盒模型简介
如何了解盒模型 盒模型简介:盒模型是css布局的基石,它规定了网页元素如何显示以及元素间相互关系.css定义所有的元素都可以拥有像盒子一样的外形和平面空间. 盒模型的组成:内容区.补白/填充.边框.边 ...
随机推荐
- [BZOJ 1106] [POI2007] 立方体大作战tet 【树状数组】
题目链接:BZOJ - 1106 题目分析 从1到2n枚举每一个位置. 如果枚举到某一个数,这个数已经是第二次出现,那么就看它和第一次出现的位置之间有多少数还没有被匹配,有多少没有匹配的就要进行多少次 ...
- linux平台的office文档转pdf(程序员的菜)
需要材料: 1. Openoffice3.4(我是32位的centos,可以根据自己的系统下载指定的openoffice软件包) 下载地址:http://sourceforge.net/projec ...
- 单片机Keil软件仿真与调试技巧
一.引言 单片机软件开发过程中,软件调试遇到的各种问题常令初学者感到不知所措.实际上.各种仿真开发软件的程序调试基本方法和技巧大同小异,掌握正确的程序调试基本技巧.对于排查这些程序错误问题可以起到举一 ...
- lc面试准备:Remove Duplicates from Sorted List
1 题目 Given a sorted linked list, delete all duplicates such that each element appear only once. For ...
- 微软开放技术发布开源的微软云服务器底盘管理器 (Chasis Manager) 软件
发布于 2014-07-14 作者 陈 忠岳 今天,微软公司加入开放计算项目(OCP),贡献出硬件和软件规范,管理 API 和协议,机械 CAD 模型,以及电路板文件和 Gerbers(描述印刷 ...
- 15个值得开发人员关注的jQuery开发技巧和心得
在这篇文章中,我们将介绍15个让你的jQuery更加有效的技巧,大部分关于性能提升的,希望大家能够喜欢! 1. 尽量使用最新版本的jQuery类库 jQuery项目中使用了大量的创新.最好的方法来提高 ...
- 双11不再孤单,结识ECharts---强大的常用图表库
又是一年双十一,广大单身狗们有没有很寂寞(好把,其实我也是)!但是这次的双十一,我不再孤单,因为结识了一个js的强大的图表库---ECharts. 最近做软件工程项目的时候,由于设计图中有柱状图和饼图 ...
- Unity3d 基于物理渲染Physically-Based Rendering之最终篇
前情提要: 讲求基本算法 Unity3d 基于物理渲染Physically-Based Rendering之specular BRDF plus篇 Unity3d 基于物理渲染Physically-B ...
- Eclipse的下载和安装
下载 Android开发首选Eclipse for Android Developers版本,里面集成了ADT(Android Development Tools). 下载页面:http://www. ...
- Google翻译
本博文的主要内容有 .Google翻译的介绍 .Google翻译之一:内容板块的翻译 .Google翻译之二:网页的翻译 .Google翻译之四:文档的翻译 .Google翻译之四 ...
注意