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
用来显示控件的块级元素。例如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
用来包含复数段落。
新增的属性: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
。一个用来包含复数行级元素,一个用来包含复数块级元素。
一个流文档其实就只有3层
最顶层是整个文档FlowDocument
。它包含了复数个段落Block
。
第二层就是Block
。它包含了复数个句子Inline
。
第三层就是Iniline
。他用来承载具体内容。