WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。
定义
WPF是微软新一代图形系统,运行在.NET Framework 3.0及以上版本下,为用户界面、2D/3D 图形、文档和媒体提供了统一的描述和操作方法。
WPF是Windows操作系统中一次重大变革,与早期的GDI+/GDI不同。WPF是基于DirectX引擎的,支持GPU硬件加速,在不支持硬件加速时也可以使用软件绘制。高级别的线程绘制可以提高使用者的体验。自动识别显示器分辨率并进行缩放。而Vista就是一个非常典型的例子。
特点
程序人员与美工人员明确分工,美工人员可以使用Expression Studio中套装工具可视化的设计界面。然后交给程序开发组中的XAML就可以。让程序人员直接套用到开发环境,不需要想页面怎么切了。
对与WPF最重要的特色,矢量图的超强支持。兼容支持2D绘图,比如矩形、自定义路径,位图等。文字显示的增强,XPS和消锯齿。三维强大的支持。包括3D控件及事件,与2D及视频合并打造更立体效果。渐变、使用高精确的(ARGB)颜色,支持浮点类型的像素坐标。这些对GDI+远远不及的。
您可以使用任何一种.Net编程语言(C#,VB NET等开发语言)进行开发。XAML主要针对界面的可视化控件描述,成生进会分析成.cs或.vb文件,并最后将编译为CLR中间运行语言。
组成结构
WPF 由两个主要部分组成:引擎和编程框架。
1.WPF引擎。WPF 引擎统一了开发人员和设计人员体验文档、媒体和 UI 的方式,为基于浏览器的体验、基于窗体的应用程序、图形、视频、音频和文档提供了一个单一的运行时库。WPF 使得应用程序不仅能够充分利用现代计算机中现有的图形硬件的全部功能,而且能够利用硬件将来的进步。例如,WPF的基于矢量的呈现引擎使应用程序可以灵活地利用高 DPI监视器,而无需开发人员或用户进行额外的工作。同样,当 WPF 检测到支持硬件加速的视频卡时,它将利用硬件加速功能。
2.WPF 框架。WPF 框架为媒体、用户界面设计和文档提供的解决方案远远超过开发人员现在所拥有的。WPF 的设计考虑了可扩展性,使开发人员可以完全在WPF引擎的基础上创建自己的控件,也可以通过对现有WPF 控件进行再分类来创建自己的控件。WPF 框架的核心是用于形状、文档、图像、视频、动画、三维以及用于放置控件和内容的面板的一系列控件。这些“自有控件”为开发下一代用户体验提供了构造块。
Microsoft 在引入 WPF 的同时,还引入了 XAML,这是一种公开表示 Windows应用程序用户界面的标记语言,可使开发人员和设计人员用来构建和重用 UI 的工具更加丰富。对于 Web 开发人员,XAML 提供了熟悉的 UI 说明模式。XAML 还使 UI 设计从基础代码中分离出来,从而使开发人员和设计人员之间的合作更加紧密。
运行环境
1、 WPF桌面程序,此类型没有任何限制,可以是Windows可执行程序也可以是DLL动态链接库。只需要.Net Framework 3.0以上版本支持即可!
2、 RIA分布式环境,服务器与客户端浏览器下载使用ActiveX插件方式解释执行的。微软更名为Silverlight,由于安全原因,微软提取精简版.Net Framework到Silverlight中独立运行,精简了很多类库。
3、浏览器承载的应用程序(称为 XAML 浏览器应用程序 (XBAP)),您可以创建能够使用超链接(Hyperlink 类)导航的页面 (Page) 和页函数 (PageFunction(Of (T)))。
分类
虽然控件没有数据重要,但是还是比较重要的,毕竟是门面啊,只是在数据面前,它比较"有礼貌"。控件有很多,但是如果仔细去分析,也是有规律可循的,根据其作用,我们可以把控件分为6类:
· 布局控件:是可以容纳多个控件或者嵌套其他布局的控件,用于在UI上组织和排列控件。其父类为Panel。
· 内容控件:只能容纳一个控件或者布局控件作为他的内容。所以经常借助布局控件来规划其内容。其父类为ContentControl。
· 带标题内容控件:相当于一个内容控件,但是可以加一个标题,标题部分也可以容纳一个控件或者布局,其父类为HeaderedContentControl。
· 条目控件:可以显示一列数据,一般情况下,是数据的类型是相同的。其共同的基类为ItemsControl。
· 带标题的条目控件:和上面的带标题内容控件类同,其基类为HeaderdeItemsControl。
· 特殊内容控件:这类控件比较独立,但也比较常用,如TextBox,TextBlock,Image
当这些控件不能够满足需求的时候,也可以从受信任的来源下载控件,并通过添加引用来导入自定义控件。支持WPF的第三方控件有:ComponentOne Studio,ActiveReports,visifire,Stimulsoft Report等。