在其他一些UI框架中,比如WinForms,想要显示长篇的富文本是非常困难的。一般的解决办法是通过在RichTextBox中加载文件或者创建一个WebBrowser组件来加载本地或者远程网页,但是,如果想随心所欲的编辑这些加载的富文本,基本是不可能的。而微软想在WPF中解决这个问题,让这些富文本的编辑也变得和显示一样简单。
FlowDocument负责渲染富文本,这包括图片、列表、表格,以及其他可以浮动、调整等的元素。使用FlowDocument,你可以在设计时像HTML一样指定富文本内容(多亏了XAML)并让它直接在你的WPF应用中渲染。
FlowDocument并不是单独的组件。相反,它使用诸多内置封装中的一个来控制FlowDocument该如何布局以及内容是否能被用户编辑。WPF包括了三个控件用于渲染一个只读模式的FlowDocument,它们都提供了缩放、打印的简单支持:
FlowDocumentScrollViewer - 围绕着FlowDocument的最简单的包装,它简单地把文档显示成一份长文本文档,并允许你滚动浏览它。
FlowDocumentPageViewer - 这个封装会自动把你的文档分割成页,以便用户在页之间浏览。
FlowDocumentReader - 这是 FlowDocumentScrollViewer 和 FlowDocumentPageViewer的结合体,允许用户在两种渲染模式中选择。它也提供了在文档中进行搜索的能力与接口。
FlowDocument通常是只读的,但将其放入一个RichTextBox控件后(后续教程会讲到),你就可以像在Word那样的文档编辑器上一样编辑这些文本。
在接下来的几个章节,我们会讨论包括只读与可读写在内的所有FlowDocument的包装。在这之后,我们会探讨你在使用FlowDocument创建富文本文档时遇到的所有的情况,包括表格、列表、图片等。