文档元素
文档元素是用来处理文档的呈现方式。WPF文档一般分为两大类,流式布局和固定布局。FixedDocument元素就是用来设计那种所见即所得的固定布局。也就是说你在设计时,文档的格式是什么,在呈现时它的格式也是什么,没有任何的差异。
而用FlowDocument元素构建的流式布局文档在呈现时具备更好的灵活性,并且也提高了文档的可读性。流式布局文档的呈现效果是由多种因素决定的,例如屏幕和页面的大小、字体大小,以及用户的喜好所作的设置。流式布局文档是由一个或多个自Block或者Inline派生的元素组成的。Block、Figure、Floater、List、ListItem、Paragraph、Section、Table和TableCell等Block元素通常是用来组织和格式化文本块。而Inline元素则是用来格式化文本块中的文本信息,Inline元素主要包括Bold、AccessKey、LineBreak、Hyperlink、Italic、Subscript、Superscript和Underline。
Flow Document是Block的集合,所有Block都是从System.Windows.Documents.Block。Block又是从 ContentElement派生而来,ContentElement 是 WPF 中专门为文档定义优化的一个相当低级别的类。这类似于用来定义 WPF 界面的控件--它们都从UIElement 派生而来。两者的继承树在概念上很相似,但并不完全相同。这意味着 WPF控件和块不能直接组合。例如Paragraph中不能直接包含对类似Button的定义,但它可以通过特殊 BlockUIContainer块类包含任何 WPF 控件。这意味着,流文档可以包含所有类型的 WPF元素(包括交互式用户界面、媒体和三维元素),而从另一个角度看,流文档也可是任何 WPF用户界面的一部分,例如可以是控件内容的一个高级布局元素,也可以是一个真正的元素。
一些文档元素看起来是不是似曾相识,例如Paragraph、Table和Italic。是的,我们其它的一些用户界面标记语言中也会用到这些类似的格式化元素,例如HTML中的<p>、<table>和<i>。虽然它们的实现机制都差不多,但是XAML中的文档元素包含了丰富的属性,这是相应的HTML副本所不具备的。
Block 派生类:
Paragraph | Paragraph 通常用于将内容分组到一个段落中。Paragraph 的最简单且最常见的用途是创建文本段落。 |
Section | Section 只用于包含其他 Block 派生元素。 它不会向其中包含的元素应用任何默认格式。不过,在 Section 上设置的任何属性值都适用于其子元素。使用节能够以编程方式循环访问其子级的集合。 Section 的使用方式类似于 HTML 中的 <DIV> 标记。 |
BlockUIContainer | 使 UIElement 元素(例如 Button)能够嵌入到 Block 派生的流内容中。一个 BlockUIContainer 最多只能直接承载一个 UIElement 子级。 但是,由 BlockUIContainer 承载的子元素可承载它自己的子级。 |
List | List 用于创建项目符号列表或编号列表。 将 MarkerStyle 属性设置为 TextMarkerStyle 枚举值可确定列表的样式。 |
Table | Table 用于创建表。 Table 类似于 Grid 元素,但是它具有更多功能 |
Inline 派生类:
Inline 元素通常用作在屏幕上呈现的内容的直接容器。例如,一个 Paragraph(Block 元素)可包含一个 Run(Inline 元素),而 Run 实际包含在屏幕上呈现的文本。
Run | Run 用于包含无格式文本。 您可能预期 Run 对象会在流内容中广泛使用,不过,在标记中不需要显式使用 Run 元素。 | ||||
Span | Span 将其他 Inline 内容元素组织到一起。 对于 Span 元素中的内容,不应用任何继承呈现。 但是,从 Span 继承的元素(包括 Hyperlink、Bold、Italic 和 Underline)确实会向文本应用格式。 | ||||
InlineUIContainer | InlineUIContainer 使 UIElement 元素(即像 Button 这样的控件)能够嵌入到 Inline 内容元素中。 是与BlockUIContainer 等效的 Inline 元素。 | ||||
Figure 和 Floater | 通过 Figure 和 Floater,可以使用定位属性在流文档中嵌入内容,这些定位属性可独立于主内容流进行自定义。 Figure 或 Floater 元素通常用于突出显示或强调内容的某些部分、在主内容流中承载支持图像或其他内容、或者插入不密切相关的内容(例如广告)。
如果希望控制大小和定位,并且确信内容适合于指定的大小,那么 Figure 非常适合于放置独立内容。Floater 适合放置流动方式与主页内容类似但独立于主页内容的、具有更大流动自由度的内容。 | ||||
LineBreak | LineBreak 导致在流内容中发生换行。 |
内容架构
不同流内容元素的数量是如此之多,因此了解某个元素可包含的子元素的类型是非常困难的。下面的关系图概述了流元素的包容规则。箭头表示可能存在的父/子关系。
自定义文本
TextDecorations | 使用文本修饰,可以向文本应用下划线、上划线、基线和删除线效果 |
Typography | 版式,用于控制文本的版式特征/变体(即小型大写字母或大型大写字母、上标和下标等)。 |
摘自:http://www.cnblogs.com/jacksonyin/archive/2008/09/18/1109416.html
还发现一个详细介绍FlowDocument的文章:http://bbs.cnw.com.cn/viewthread.php?tid=124974