WPF FlowDocument结构详解

本文详细介绍了WPF中的FlowDocument结构,包括其三层结构:FlowDocument、Block及Inline,并解释了各层的作用和特点。

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

FlowDocument

一、介绍

FlowDocument是WPF中的流文档,用来承载大段文章。可以用来显示文章。或者在RichTextBox中编辑文章。
FlowDocument没有多少方法,但有大量的属性,用来设置文章的字体,字体大小,前景色,背景色之类的。
但这些都没什么特别的,最重要的,是FlowDocument的结构。

二、FlowDocument的结构

一个流文档(文章)可以分为3层。
最顶层是FlowDocument,相当于一篇文章,包含了复数个段落。
第二层是Block,相当于一个段落,包含了复数个句子。
最底层是Inline,相当于一个句子,用于承载具体内容。
同时,每一层的结构都是一个链表。
虽然BlockInline都有多个实现类,但本文探讨的是抽象的结构,因此,使用抽象父类来解释更好理解。

1.第一层FlowDocument

FlowDocument的属性Blocks,承载了第二层所有Block
因为是链表结构,所以不能根据下标获取指定的Block
但有两个属性FirstBlockLastBlock用于链表第一个Block和最后一个Block

2.第二层Block

Block是一个抽象父类,指代一种块级元素,意思就是,一定会换行。
因为是链表结构,每一个Block也可以获取它的上一个Block或下一个Block
他有多种实现形式,有时是包含多个Inline的段落,有时也是包含多个Block的大段落。

Block的其中两种实现

2.1 Section

也用来承载复数Block。因此也有一个Blocks属性。结构和FlowDocument相同。

2.2 Paragraph

用来承载复数Inline。他有一个Inlines属性。承载了第三层的Inline。也是链表结构,所有也不能根据下标获取指定的Inline。使用FirstInlineLastInline来表示第一个Inline和最后一个Inline

3.第三层Inline

Inline也是抽象父类,指代一种行级元素,意思是,不一定会换行。
每一个Inline也可以获取他的上一个Inline或下一个Inline
也有多种实现形式,有时是包含文字的句子,有时也可以包含多个Inline的大句子。

Inline的其中两种实现。

3.1 Run

用来承载文字。他的关键属性Text。赋值后就可以显示,可以说是FlowDocument中最底层,直接显示文字的类。结构到这里就算结束了。

3.2 Span

用来承载复数Inline。也有一个Inlines属性,结构和Section相同。

以上,结构介绍完毕。可以看出BlockInline结构也非常相似。
他们都是链表。
他们都可以作为容器承载复数条同一级的元素。

三、更多情报

关于BlockInline的详细介绍,可以看看我另外两篇文章。
里面会详细介绍他们的特性以及实现类。

关于BlockWPF FlowDocument中的Block级元素

关于InlineWPF FlowDocument中的Inline级元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

笑我归无处

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

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

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

打赏作者

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

抵扣说明:

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

余额充值