WPF TextElement内容模型简介(转)

本内容模型概述描述了 TextElement 支持的内容。 Paragraph 类是 TextElement 的类型。 内容模型描述哪些对象/元素可以包含在其他对象/元素中。 本概述汇总了派生自 TextElement 的对象所使用的内容模型。 有关更多信息,请参见流文档概述

内容模型关系图

下面的关系图对派生自 TextElement 的类所使用的内容模型,以及其他非 TextElement 类如何适应该模型进行了汇总。

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

  1. 一个 RichTextBox 必须包含一个 FlowDocument,而后者又必须包含一个派生自 Block 的对象。 下图是上述关系图中的相应一部分。

    到此为止,标记可能类似于所示内容。

  2. 按照该关系图,存在多个可以从中进行选择的 Block 元素,包括 ParagraphSectionTableList 和 BlockUIContainer(请参见上图中从 Block 派生的类)。 假设我们需要一个 Table。 按照上面的关系图,一个 Table 包含一个 TableRowGroup,后者包含多个TableRow 元素,这些行元素又包含多个 TableCell 元素,而这些单元格元素又包含一个从 Block 派生的对象。 下图是本文档内第一个关系图中与 Table 相对应的一部分。

    下面是相应的标记。

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

下面是标记中的完整示例。

以编程方式处理 TextElement 内容

TextElement 的内容由集合组成,因此,可以通过处理这些集合来以编程方式操作 TextElement 对象的内容。 从 TextElement 派生的类可以使用以下三个不同的集合:

可以从这些集合中,分别使用 InlineBlock 和 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();

共享此内容模型的类型

下面的类型继承自 TextElement 类,可以用来显示本概述中描述的内容。

BoldFigureFloaterHyperlinkInlineUIContainerItalicLineBreakListListItemParagraphRunSectionSpanTableUnderline.

请注意,此列表中仅包括与 Windows SDK 一起分发的非抽象类型。 可以使用继承自 TextElement 的其他类型。

可包含 TextElement 对象的类型

请参见 WPF 内容模型

时间: 2024-11-06 19:08:38

WPF TextElement内容模型简介(转)的相关文章

MVC模型 简介

MVC (Modal View Controler)本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.比如一批统计数据你可以分别用柱状图.饼图来表示.C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新. 模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用.最近几年被推荐为Sun公司J2EE平

织梦dedecms 中怎么在首页调用指定单篇文章的body主体内容和简介?

在使用织梦dede建站的过程中,我们通常会在首页或者列表页调用文章内容,官方的做法一 般是调用描述内容,但是调用描述存在相应的缺点:调用的内容有限,默认描述内容较短,并且文章修改后,描述不能自动修改,需要手动修改.下面分享一个可以 实现首页或者列表页调用文章body内容而不是description的方法: {dede:arclist row='1' addfields='body' idlist='18' typeid='1' channelid='1'} [field:body functio

WPF中的图像处理简介

原文:WPF中的图像处理简介 和Winform中的GDI+相比,WPF提供了一组新的API用于显示和编辑图像.新API特点如下: 适用于新的或专用图像格式的扩展性模型. 对包括位图 (BMP).联合图像专家组 (JPEG).可移植网络图形 (PNG).标记图像文件格式 (TIFF).Microsoft Windows Media 照片.图形交换格式 (GIF) 和图标 (.ico) 在内的本机图像格式增强了性能和安全性. 高位深图像数据的保留最多 32 位/通道. 非破坏性图像缩放.裁切和旋转.

WPF的线程模型

原文:WPF的线程模型 WPF的线程模型 周银辉 谈到多线程,很多人对其可能都不太有好感,觉得麻烦与易出错.所以我们不排除有这样的情况:假设我对“多线程”.“异步”这些字眼潜意识地有些反感,所以在编码过程中能不用就不用,觉得延迟几百毫秒还是可以忍受的,如果系统中这种“可以忍受”的地方很多,最后我们会发现系统的性能变得一团糟,界面总是在“卡”(阻塞).这里我们讨论一下WPF的多线程模型,以便利用它使我们的UI线程得到解脱. 1,UI线程 传说WPF应用程序都至少有两个线程,一个用于UI绘制,其隐藏

内容模型定义的自定义字段在{dede:arclist}中调用不了

arclist标签调用附加表字段不再以频道模型指定的字段为依据,调用时需注意下面两个问题: 1.必须指定 channelid (内容频道id): [这句的意思是你是在那个模型上创建的字段,比如你在[普通文章]或[商品]模型上增加了1个字段flvurl,在[内容模型管理]中,[普通文章]模型或[商品]模型的ID是[1]或[6]] 2.直接在标记指定要调用的字段(可以在内容提模型管理中看这些字段名): 示例: {dede:arclist addfields='language,softtype' r

Linux网络I/O模型简介

一.I/O基础入门 java1.4之前的早期版本,java对I/O的支持并不完善,开发人员在开发高性能I/O程序的时候,会面临一些巨大的挑战和困难,主要问题如下. 1.没用数据缓冲区,I/O性能存在问题: 2.没有C或者C++中的Channel概念,只有输入和输出流: 3.同步阻塞式I/O通信(BIO),通常会导致通信线程被长时间阻塞: 4.支持字符集有限,硬件可移植性不好. 二.Linux网络I/O模型简介 Linux的内核讲所有外部设备都看做一个文件来操作,对一个文件的读写操作会调用内核提供

因子分解机模型简介

Steffen Rendle于2010年提出Factorization Machines(下面简称FM),并发布开源工具libFM. 一.与其他模型的对比 与SVM相比,FM对特征之间的依赖关系用factorized parameters来表示.对于输入数据是非常稀疏(比如自动推荐系统),FM搞的定,而SVM搞不定,因为训出的SVM模型会面临较高的bias.还有一点,通常对带非线性核函数的SVM,需要在对偶问题上进行求解:而FM可以不用转为对偶问题,直接进行优化. 目前还有很多不同的factor

ORM模型简介

ORM模型简介 1>什么是ORM? ORM,即 Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在操作具体的 业务对象时,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法即可. 2>ORM 两种最常见的实现方式是 ActiveRecord 和 DataMapper, ActiveRecord(非常流行) 中模型与数据表一一对应, DataMapper 中模型与数据表是完全分离的. 3>

详细了解HTML标签内容模型

 HTML核心的部分莫过于标签(tag)了.标签是用来描述文档中的各自内容基本单元,不同标签表示着不同的含义,标签之间的嵌套表示了内容之间的结构. HTML标签在HTML5中内容模型拓展到了7类,包括元数据型.区块型.标题型.文档流型.语句型.内嵌型.交互型.但即使是这7个类别也没有完全覆盖所有元素的所有情况,元素可以不属于任何一个类别,被称为穿透的:很多元素可能属于不止一个类别,称为混合的 HTML标签详细信息见此w3c链接 分类 元数据型(metadata) 设置展示.行为.关联文档或其他内