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视觉效果和强大无比的控件模型框架。
Windows Presentation Foundation(以前的代号为“Avalon”)是 Microsoft 用于 Windows 的统一显示
子系统
,它通过 WinFX 公开。它由显示引擎和
托管代码
框架组成。Windows Presentation Foundation 统一了 Windows 创建、显示和操作文档、媒体和
用户界面
(UI) 的方式,使开发人员和设计人员可以创建更好的视觉效果、不同的
用户体验
。Windows Presentation Foundation 发布后,
Windows XP
、
Windows Server 2003
和以后所有的 Windows操作系统版本都可以使用它。
WPF是.Net Framework 3.0里新推出的主打功能之一,加上Vista集成.Net Framework 3.0,改写
Winform
时代,可谓是影响巨大!WPF是一套API函数库,由.Net FrameWork3.0以上版本类库运行。
WPF是Windows操作系统中一次重大变革,与早期的
GDI+
/GDI不同。WPF是基于
DirectX
引擎的,支持GPU
硬件加速
,在不支持硬件加速时也可以使用软件绘制。高级别的线程绘制可以提高使用者的体验。
自动识别
显示器分辨率
并进行缩放。而Vista就是一个非常典型的例子。
对于WPF最重要的特色,
矢量图
的超强支持 。兼容支持2D绘图,比如矩形、
自定义路径
,位图等。文字显示的增强,XPS和消锯齿。三维强大的支持。包括3D控件及事件,与2D及
视频合并
打造更立 体效果。渐变、使用高精确的(
ARGB
)颜色,支持浮点类型的
像素坐标
。这些对GDI+远远不及的。
灵活、易扩展的动画机制!.Net Framework 3.0类库提供了强大的
基类
,只需继承就可以实现自定义程序使用绘制。接口设计非常直观,完全面向对象的
对象模型
。使用对象
描述语言
XAML。使用
开发工具
的可视化编辑。
您可以使用任何一种.Net编程语言(C#,VB NET等开发语言)进行开发。XAML主要针对界面的可视化控件描述,成生进会分析成.cs或.vb文件,并最后将编译为
CLR
中间运行语言。
Windows Presentation Foundation 由两个主要部分组成:引擎和编程框架。
1.
Windows Presentation Foundation
引擎。Windows Presentation Foundation 引擎统一了开发人员和设计人员体验文档、媒体和 UI 的方式,为基于浏览器的体验、基于窗体的应用程序、图形、视频、音频和文档提供了一个单一的
运行时库
。Windows Presentation Foundation 使得应用程序不仅能够充分利用现代计算机中现有的图形硬件的全部功能,而且能够利用硬件将来的进步。例如,Windows Presentation Foundation 的基于矢量的呈现引擎使应用程序可以灵活地利用高
DPI
监视器
,而无需开发人员或用户进行额外的工作。 同样,当 Windows Presentation Foundation 检测到支持
硬件加速
的
视频卡
时,它将利用硬件加速功能。
2.
Windows Presentation Foundation 框架。
Windows Presentation Foundation 框架为媒体、用户界面设计和文档提供的解决方案远远超过开发人员现在所拥有的。Windows Presentation Foundation 的设计考虑了
可扩展性
,使开发人员可以完全在 Windows Presentation Foundation引擎的基础上创建自己的控件,也可以通过对现有 Windows Presentation Foundation 控件进行再分类来创建自己的控件。Windows Presentation Foundation 框架的核心是用于形状、文档、图像、视频、动画、三维以及用于放置控件和内容的面板的一系列控件。这些“自有控件”为开发下一代用户体验提供了构造块。
Microsoft 在引入 Windows Presentation Foundation 的同时,还引入了
XAML
,这是一种公开表示 Windows应用程序用户界面的
标记语言
,可使开发人员和设计人员用来构建和重用 UI 的工具更加丰富。对于 Web 开发人员,XAML 提供了熟悉的 UI 说明模式。XAML 还使 UI 设计从基础代码中分离出来,从而使开发人员和设计人员之间的合作更加紧密。
WPF可以运行在三种环境下面,如下:
1、 WPF桌面程序,此类型没有任何限制,可以是Windows
可执行程序
也可以是DLL
动态链接库
。
只需要.Net Framework 3.0以上版本支持即可!
2、
RIA
分布式环境,服务器与客户端浏览器下载使用
ActiveX
插件方式
解释执行
的。微软更名为Silverlight,由于安全原因,微软提取精简版.Net Framework到Silverlight中独立运行,精简了很多类库。
3、浏览器承载的应用程序(称为 XAML 浏览器应用程序 (
XBAP
)),您可以创建能够使用
超链接
(Hyperlink 类)导航的页面 (Page) 和页函数 (PageFunction(Of (T)))。
WPF其实不仅仅是
图形引擎
而已,它将给Windows应用程序的开发带来一次革命,因为新的架构提供了一种全新的开发模式。当然对于普通用户而言,最直观的就是界面越来越漂亮,看起来越来越舒服了;但对于开发人员而言,界面显示和代码将更好的得到分离,这与从前的
桌面应用程序
开发有很多不同(界面设置和代码是融合在一起的),这是比较具有革命性的改变之一。
还有就是桌面应用程序和浏览器应用程序的融合,根据ms的承诺,正在开发中的
WPF/E
,即WPF Everywhere版本,将为基于WPF的应用程序提供全面的浏览器支持,这意味着未来开发出的应用程序将可以基于浏览器在不同的操作系统上运行,根据WPF/E开发组的定义,WPF/E仍然是WPF的子集,而不是后继版本。总体而言,WPF的前景应该是一片光明。
WPF
实质
先从
UI
上分析,UI的功能是让用户观察和操作数据,为了能
显示数据
和响应用户的操作
通知程序
(通过事件来通知,如何处理事件又是一系列的算法),所以控件就是显示数据和响应用户操作的
UI元素
,也即:控件就是数据和行为的载体。
WPF
数据驱动UI
什么是
数据驱动
UI呢?我们知道传统的G
UI界面
都是由
windows消息
通过事件传递给程序,程序根据不同的操作来表达出不同的数据体现在UI界面上,这样数据在某种程度上来说,受到很大的限制。WPF中是数据驱动UI,数据是核心,处于主动的,UI从属于数据并表达数据,是被动的。WPF数据第一,控件第二。
WPF
分类
虽然控件没有数据重要,但是还是比较重要的,毕竟是门面啊,只是在数据面前,它比较"有礼貌"。控件有很多,但是如果仔细去分析,也是有规律可循的,根据其作用,我们可以把控件分为6类:
-
布局控件:是可以容纳多个控件或者嵌套其他布局的控件,用于在UI上组织和排列控件。其父类为Panel。
-
内容控件:只能容纳一个控件或者布局控件作为他的内容。所以经常借助布局控件来规划其内容。其父类为ContentControl。
-
带标题内容控件:相当于一个内容控件,但是可以加一个标题,标题部分也可以容纳一个控件或者布局,其父类为HeaderedContentControl。
-
条目控件:可以显示一列数据,一般情况下,是数据的类型是相同的。其共同的基类为ItemsControl。
-
带标题的条目控件:和上面的带标题内容控件类同,其基类为HeaderdeItemsControl。
-
特殊内容控件:这类控件比较独立,但也比较常用,如TextBox,TextBlock,Image等。