WPF FlowDocument中的Block级元素

WPF Block级元素

一、共同父类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

1.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

获取或设置为块级别流内容元素内的每行文本确定行框的方式。

二、派生类

Block是他们的共同父类,因此稍微抽象,我们接下来看看其具体如何实现的。

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

用来显示控件的块级元素。例如CheckBoxButton等等。

新增的属性:Child

获取或设置由 UIElement 承载的 BlockUIContainer

3. List

提供用于在有序列表或无序列表中呈现内容的功能的块级别流内容元素。

新增的属性

3.1 ListItems

获取一个 ListItemCollection,其中包含组成 ListItem 的内容的 List元素。

3.2 MarkerOffset

获取或设置每个 ListItem 元素内容与列表标记近边缘之间的所需距离

3.3 MarkerStyle

获取或设置List 的标记样式。

3.4 StartIndex

获取或设置用于标记有序列表中的项的起始索引。

4. 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不复杂。个人最常用的只有ParagraphSection。一个用来包含复数行级元素,一个用来包含复数块级元素。
一个流文档其实就只有3层
最顶层是整个文档FlowDocument。它包含了复数个段落Block
第二层就是Block。它包含了复数个句子Inline
第三层就是Iniline。他用来承载具体内容。

上一篇:WPF 与 Winform 的区别以及应用场景


下一篇:WPF 中关闭子窗体时,出现父窗体自动最小化问题。