FlowDocument中的Block级元素
Block
是流文档中的块级元素,每个Block
都相当于一个段落。
再详细说说的话,像一篇文章中的一段文章。写完之后要换行写下一行。那么这一个段落就是一个块级元素。用Paragraph
实现类来表示。
或者一篇文章中有一个大表格,显示一个表格显然要占多行表示。所以也是一个块级元素。用Table
实现类来表示。
或者多个段落共同组成同一个主旨的内容。想要把这些段落归为一整块。那么这也是一个块级元素。用Section
实现类来表示。
无论他们有怎样的实现类。但他们显然有他们共同的特点。
**都是块级元素。**因此把他们共同的特点提取出来,就是他们的共同父类——Block
一、共同父类Block
Block
是流文档中的块级元素的共同父类,包含了块级元素都拥有的相同属性。
流文档(FlowDocuemnt
)的直属下级就是Block
。
Block
之间是链表结构。每个Block都是链表中的一个节点。因此每个Block都有两个属性,指向上一个Block
或下一个Block
。
说一说他们共同的属性吧。
属性
1) BorderBrush
边框颜色
2) BorderThickness
边框宽度
3) LineHeight
设置行高
4) Padding
内边距
5) Margin
外边距
6) TextAlignment
获取或设置文本内容的水平对齐方式。
7) NextBlock
获取紧随当前 Block
元素之后的同级 Block
元素。
获取下一个 Block
。
8) PreviousBlock
获取紧邻当前 Block
元素之前的同级 Block
元素。
获取上一个 Block
。
9) SiblingBlocks
获取一个 Block
元素的集合,这些元素是当前 Block
元素的同级元素。
获取同级的所有 Block
。
10) BreakColumnBefore
获取或设置一个值,该值指示当元素参与使用了分栏的内容呈现时,是否自动在此元素之前插入一个分栏符。
11) BreakPageBefore
获取或设置一个值,该值指示是否自动在此元素之前插入一个分页符。
顾名思义,插入分页符。
12) ClearFloaters
获取或设置某个Floater
元素所包含的任何 Block
元素的重新定位方向。
13) FlowDirection
获取或设置 Block
元素中内容流的相对方向。
大概就是内容从左往右,还是从右往左。只有两个枚举值可选。
14) IsHyphenationEnabled
获取或设置一个值,该值指示是否启用文字的自动断字功能。
15) LineStackingStrategy
获取或设置为块级别流内容元素内的每行文本确定行框的方式。
二、派生类
1. Paragraph
Paragraph
是最常用也是最基本的段落。
使用Inlines
属性来承载这个段落中所有的行级元素。
简单来说就是,用来包含很多个句子。这些句子拼凑成一个段落。
此外还有一些其他属性。
新增的属性
1.1 Inlines
获取包含顶级 Inline
元素的 InlineCollection
,前者构成 Paragraph
的内容。
1.2 KeepTogether
获取或设置一个值,该值指示是否可以用分页符或分栏符来断开段落的文本。
1.3 KeepWithNext
获取或设置一个值,该值指示此段落和下一段落之间是否可以出现一个换行符。
1.4 MinOrphanLines
获取或设置一个值,该值指定了在用分页符或分栏符断开一个 Paragraph
时,换行符前保留的最小行数。
1.5 MinWidowLines
获取或设置一个值,该值指定了在用分页符或分栏符断开一个 Paragraph
时,换行符后的最小行数。
1.6 TextDecorations
获取或设置一个 TextDecorationCollection
,它包含应用于此元素的文本修饰。
1.7 TextIndent
获取或设置一个值,该值指示 Paragraph
的第一行的缩进距离。
2. BlockUIContainer
用来显示控件的块级元素。例如CheckBox
,Button
等等。
新增的属性:Child
获取或设置由 UIElement
承载的 BlockUIContainer
。
3. List
提供用于在有序列表或无序列表中呈现内容的功能的块级别流内容元素。
新增的属性
3.1 ListItems
获取一个 ListItemCollection
,其中包含组成 ListItem
的内容的 List
元素。
3.2 MarkerOffset
获取或设置每个 ListItem
元素内容与列表标记近边缘之间的所需距离
3.3 MarkerStyle
获取或设置List
的标记样式。
3.4 StartIndex
获取或设置用于标记有序列表中的项的起始索引。
4. Section
Section
并不是用来包含行级元素的,他被用来包含多个段落。用处是将多个主题相同的段落包括在一起。
新增的属性:Blocks
获取包含顶级 Block
元素的 BlockCollection
,前者构成 Section
的内容。
HasTrailingParagraphBreakOnPaste
获取或设置一个值,该值指示当将 Section
根元素的内容置于剪贴板中时,是否应在最后一个段落之后插入尾随分段符。
5. Table
提供基于网格的演示文稿(按行和列组织)的块级别流内容元素。
简单来说就是用来绘制表格。
属性
5.1 CellSpacing
获取或设置表的单元格之间的间距大小。
5.2 Columns
获取 TableColumnCollection
对象,该对象包含由表承载的列。
5.3 LogicalChildren
获取一个可用于迭代 Table
的逻辑子级的枚举数。
5.4 RowGroups
获取 TableRowGroupCollection
集合对象,该对象包含由表承载的行组。
三、总结
Block
不复杂。个人最常用的只有Paragraph
和Section
。一个用来包含复数行级元素,一个用来包含复数块级元素。