WPF 简介

来源:互联网 发布:三利毛线专卖店淘宝 编辑:程序博客网 时间:2024/05/17 20:34

    自古以来,生产工具的先进程度就代表了生成力的先进程度-------生成力的发展要求人们不断的研发出新的生产工具,新生成工具的诞生又使得生产效率飞越。作为劳动生产的一种,计算机软件开发也需要工具,随着程序员们手中的工具越来越强大,软件开发的效率和质量明显提高。善于学习和掌握新工具、新技术的程序员们也总是能得到更多的实惠。


     微软Windows操作系统已经成功推出10多年,在WIndow系统中从事图形界面(Graphic User Interface,GUI)的开发程序员数不胜数,GUI程序员们手中的开发工具经历了Win32API------>MFC(及同类软件产品)-------->ActiveX/COM/Visual basic------>Winform的变迁,每一次变迁都使得开发效率和质量产生飞跃。从2007年开始,微软推出新一代GUI开发工具Window Presentation Foundation(直译为Windows表示基础,WPF),并且把WPF作为未来10年Windows平台开发GUI的主要技术。时至今日,不仅Windows Vista、Windows7、Windows Server2008、Windows Server2008R2等系统已经无缝集成了WPF,连Visual Studio 2010等重要产品已使用WPF进行开发,可见微软在WPF技术方面的务实和创新。


【什么是WPF?】

    WPF(Windows Presentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。


    WPF是微软新一代图形系统,运行在.NET Framework 3.0及以上版本下,为用户界面、2D/3D 图形、文档和媒体提供了统一的描述和操作方法。基于DirectX 9/10技术的WPF不仅带来了前所未有的3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面,比如Vista中的半透明效果的窗体等都得益于WPF。 程序员在WPF的帮助下,要开发出媲美Mac程序的酷炫界面已不再是遥不可及的奢望。 WPF相对于Windows客户端的开发来说,向前跨出了巨大的一步,它提供了超丰富的.NET UI 框架,集成了矢量图形,丰富的流动文字支持(flow text support),3D视觉效果和强大无比的控件模型框架。


    WPF是Windows操作系统中一次重大变革,与早期的GDI+/GDI不同。WPF是基于DirectX引擎的,支持GPU硬件加速,在不支持硬件加速时也可以使用软件绘制。高级别的线程进行绘制,提高使用者的体验。自动识别显示器分辨率并进行缩放。而Vista就是一个非常典型的例子。


【WPF的功能?】

   WPF的功能是用来编写应用程序的表示层,至于业务逻辑层和数据层也有专门的新技术,比如业务逻辑层的新技术WCF(Windows Communication Foundation)和WF(Windows Workflow Foundation)。微软用于表示层开发的技术不算少,包括WPF,Windows Forms,ASP.NET,Silveright等。换句话说,无论使用哪种技术做为表示层技术,程序的逻辑层和数据层都是相同的。


   WPF则是微软在开发理念上的一次升级-----由”事件驱动“变成了”数据驱动“


    数据驱动时代,用户每进行一个操作会激发程序发生一个事件,事件发生以后,用于响应事件的事件处理器就会执行,事件处理器是一个方法(函数),在这个方法中,程序员可以处理数据或调用别的方法,这样,程序就在事件的驱动下向前执行。可见事件驱动的数据是静态的,被动的;界面控件是主动的,界面逻辑和业务逻辑之间的桥梁是事件。而数据驱动正好相反,当数据发生改变的时候会主动通知界面控件,推动控件展示最新的数据;同时用户的操作会直接送达数据,就好像控件是”透明“的。可见,在数据驱动理念里,数据占主导地位,控件和控件事件被弱化(控件事件一般只参与界面逻辑,不再染指业务逻辑,使得程序复杂度得到有效的控制)。WPF中,数据与控件的关系就是哲学中内容与形式的关系,内容决定形式,所以数据驱动界面,这非常符合哲学原理,数据与界面间的桥梁就是数据关联(Data Binding),通过这个桥梁,数据可以流向界面,再丛界面流向数据源。


    简而言之,WPF的开发理念更符合自然哲学的思想。使用WPF进行开发较之WInform开发要简单,程序更加简洁清晰。


参考《深入浅出WPF》

1 0