WPF FlowDocument中的Block级元素

本文介绍了FlowDocument中Block级元素的概念及用途,详细解释了Block类及其派生类如Paragraph、Section等的特性与应用场景,并列举了它们的属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

用来显示控件的块级元素。例如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

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。一个用来包含复数行级元素,一个用来包含复数块级元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑我归无处

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值