WPF界面设计技巧(11)-认知流文档 & 小议WPF的野心

原文: WPF界面设计技巧(11)-认知流文档 & 小议WPF的野心

 

 

流文档是WPF中的一种独特的文档承载格式,它的书写和呈现方式都很像HTML,它也几乎具有了HTML的绝大多数优点,并提供了更强的编程支持及对WPF其余元素的兼容。html

 

直接来看代码吧,须要讲解的地方比较多,我就直接注释在代码里了,看起来更方便些:编程

 

 

Code

 

<Grid.Resources>部分我定义了文档的一些通用样式,这就像内嵌的CSS。Style真是无处不在,嗯,他能比CSS作更多的事,但也更复杂一些。网络

 

正文部分,咱们看到不少元素均可以找到其在HTML里的对应,结合咱们在HTML中的经验,这些均可以被轻松理解。工具

 

注意标题处引用的静态资源title是我在别处定义的,在这里看不到。布局

 

后台仅添加如下语句用于处理超连接点击事件,由于独立应用程序中不会自动处理它们:post

 

 

Code

 

 

下面看看显示效果:测试

 

 

这是呈现出的文档浏览界面,流文档也支持被选取和复制。this

 

咱们使用的这种流文档容器拥有一些实用的内置功能,好比分页浏览,下面就是第二页的样子:编码

 

 

如今,把窗口拉大,测试一下流文档的变化:url

 

 

它像极了HTML,这种自适应性可让咱们轻松地在多种环境下阅读。

 

 

如今对文档进行放大,能够看到,文字、图像都被放大了。这种特性一样为多环境阅览提供了有效的帮助,尤为是咱们但愿经过投影或屏幕展现文档时。

 

 

这是分栏阅读,可能比较适合有读书习惯的人使用吧,我是以为没什么意义。

 

 

带滚动条的阅读方式,比较适合用在网页和桌面程序界面里。

 

 

文本搜索功能,和IE里差很少同样简陋~~

 

能够想象一下,在之后,咱们使用一份文档就能够用于软件帮助、手册印刷、投影展现、网页呈现(支持移动设备)以及更多应用(如盲人阅读),而自始至终都不须要作任何修改或转换。

 

 嗯,为了实现这一构想,咱们从如今作起,把硬编码在程序中的流文档分离出来:

 

分离出的流文档文件:

 

 

 

Code

 

很长啊,主要是由于我把以前那个标题图形资源“title”给加进来了。

 

咱们在这里取消了超连接的事件,而且将一些通用的样式定义也取消了,由于咱们要的是一个比较干净、纯粹的独立文档,通用的样式应该留给使用方去按需求定义。

 

一个听起来不错的消息是:它如今能够直接被IE打开并阅读了

 

 

 

 

IE也自动使用咱们以前用过的流文档阅读器来呈现流文档。

 

接下来还要修改一下咱们先前的程序,以使之能载入这个文档。

 

 

Code

 

这是修改后的前台代码。

 

超连接样式定义中加入了一个事件设置器,为超连接的点击事件设置为先前的处理程序。

 

流文档阅读器增长一个事件用于在读取后载入咱们分离出去的流文档。

 

 

Code

 

后台就是两个事件处理,很简单。

 

这样就能够完美还原到咱们以前所做的效果了,为了提升感性认识,我把前面的贴图再弄过来个充数~~

 

 

 

 

总结一下,流文档技术如今还不能让人满意:应用覆盖面低,就连SilverLight都没有对其支持;没有配套编辑软件,如今手写代码是最好的编辑流文档的途径,使用RichTextBox只能进行比较简单的格式编辑,期待下一版的Office可以全力支持这一新格式。

 

这些问题的解决应该都只是时间问题,流文档的设计很是简约、完善,定位十分准确,相信会成为将来网络文档的主要载体。

 

或许有人会问,这么一个和HTML极度类似的东西有什么意义?

 

首先他和HTML定位不同,至少是和HTML如今的定位不同。咱们拿到一个流文档,很明确的知道它就是一份文档;但拿到一个HTML,即便它格式再规范,咱们也不肯定它是什么东西,它里面可能掺杂了不少页头、页脚、导航连接、菜单、布局块、侧边栏、脚本等等,它就是个大杂烩,咱们的程序并不喜欢这种不肯定的东西。

 

HTML设计之初也就是用于呈现简单的文档,但如今日益膨胀的应用,使得它不得不本身承担起布局、美化、处理交互等等行为;而咱们WPF彻底不需顾虑这些,一个简单到乏味的DockPanel在2分钟内创造的布局,使用CSS+XHTML可能须要半小时甚至更多的时间才能建立并调试完成,而当咱们决定从新调整布局位置时也能一样轻松的完成,换成CSS就是在经历噩梦了(是的,它之前就是这么说表格布局的,事实证实,它们都是噩梦),而Grid更是会让全部网页设计师挠墙。

 

因此你不会看到我去绞尽脑汁地将一个TextBlock定义为一个侧边栏,或是将一个List变为导航菜单,WPF有更精确、更适用的元素用于布局和交互,而HTML不得不靠整容来完成,那些随之产生的无语义的标记就好像垫鼻梁、盐水袋丰胸同样让我以为恶心。

 

HTML如今被广泛称之为网页,是的,你闭着眼睛也能在互联网上找到不少HTML“页”,但你很难见到一份HTML“文档”。WPF的Page就是页、Window就是窗口、Document就是文档,很是清晰明确。

 

HTML混乱、陈旧的现状其实就是WPF的巨大机遇,这也应该就是微软的野心所向,单纯以技术能力来说,WPF能够绝不费力的横扫HTML、Flash、AIR,其所欠缺的,就是咱们的推进了。

 

 

原本还想写出流文档的编辑和输出呢,一看都2W多字了~~下次再说了~~~

 

源文件

相关文章
相关标签/搜索