[WPF Documents 之旅]System.Windows.Documents下的Class Diagram
[WPF Documents 之旅]System.Windows.Documents下的Class Diagram
周银辉
由于工作和个人兴趣需要,开始学习WPF中的“文档”(FlowDocument, XPS...)。
学习一种新的东西一般有两条路线:
一种是先大概了解一下,然后“带着问题去学习”,比如需要遇到某个问题搞不定时就开始翻文档,翻Google,然后把问题解决并且学到了新东西。
另外一种方式,在动手解决之前,把基础知识都搞扎实,然后胸有成竹地去面对问题。
这各有利弊,前者避免了“学习的东西太多”的问题,但解决问题时难免有些“头疼医头脚疼医脚”,并且在寻求答案时会变得比较盲目,或许类库中本来就有相应的方法或稍稍变通一下就可以搞定的,自己却始终想不到,其实,说白了,除了一些特殊行业外,灵感更容易来源于扎实的基础、丰富的经验而不是聪明的大脑。并且干一段时间以后自己终于明白:哦,没有系统学习。所以个人更偏向于后面的一种学习方式,这得益于学生时代的学习习惯:在完成家庭作业之前,先花一个小时将老师讲的内容认真复习一遍,以便更爽快地把作业搞定,而不是被作业搞定。别担心学习量太大,因为知识是分块的,比如WPF的东西很多,你不可能将WPF全部学习完成之后才去干活,但至少在搞定一个Button之前,你应该将Button的各个属性,方法,事件理解一遍,而不是当用到某个方法时才去查(并仅仅查)那个方法的用法,如果这样,你很难搞懂一个Button到底能干啥不能干啥。
我们平时常常说“开发带动(驱动)学习”。我们作为“被驱动者”有两种行动方式:
一是消极方式(比较常见),学习并仅仅学习(查阅并仅仅查阅)开发中需要用到的东西,将问题搞定后便结束了。一个简单的例子:你要负责显示一个WPF窗口,所以你查阅资料,知道应该调用Show()方法,所以你学到了Show()方法。而ShowDialog()方法呢,也许下次遇到需要用ShowDialog()方法来解决开发问题时你会去查阅,而没有这样的开发问题的话,则永远不会知道,那么你能在你的简历中写上“熟悉WPF” 或“2年WPF开发经验”这样的字样吗?在面试一些朋友时常常遇到这样的尴尬局面:
我: 看你简历中提到了XXX技术,我们能简单聊聊吗?
朋友:以前公司有个项目用到了这个技术,然后有两年多的时间一直在用。
我:那么能谈谈其中的YYY吗?
朋友:哦,不好意思,好像听说过,但我们这个用得比较少...
二则是主动地学习,项目用到这个东西,那么它在提醒你:这个世界上存在这样的东西(也许你以前从来没有听说过),并且这个东西能解决现实中的某一类问题,这是又一个将个人成长和团队产出结合起来的最佳机会,这是学以致用的最棒方式,或许你还会想到更多。当说到这里,不用我说太多,你已经能够想象主动学习应该是什么样子的了。
废话了这么多,于是在学习WPF 中的Document之前,绘制一张类图也就不足为奇了(由于涉及的类比较多,类图比较大,整张图可以从文章附件中取得,大概样子如下:)
下载整张类图 : https://files.cnblogs.com/zhouyinhui/DocumentsNamespace.zip (该类图用Visual Paradigm for UML 6.4 Professional Edition编辑,你可以到这里下载试用版:http://www.visual-paradigm.com/product/vpuml/)
另外,下面这张来自于MSDN文档的TextElement内容模型也很具有参考价值:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
2007-01-15 让集合支持事件
2007-01-15 .net 2.0 文档生成工具