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

WPF是microsoft继Winform之后的又一用户界面设计框架,和Windows Communication Foundation(WCF)、Windows Workflow Foundation(WF)一起随.Net 3.0发布。WPF是当前众多优秀技术的集大成者,有很多的亮点。

广泛整合

在WPF以前,Windows开发人员在使用2D,3D,视频等技术时都要学习其他的技术才能完成任务。比如要学习GDI/GDI+来使用2D图形,学习Direct3D/OpenGL来使用3D,学习Flex/Flash来使用视频,这无疑增加了开发人员的学习成本。而WPF的出现,恰好整合了这些技术。对于开发人员来说,确实是一种福音。

与分辨率无关

为了充分利用新的强有力的图形硬件,WPF实现了一个基于矢量的组合引擎。我们知道,非矢量的图片(如jpg)在放缩过程中会出现失真,而矢量图片(如gif,png)却不会。使用WPF使得你缩小和放大屏幕上的元素时不用考虑屏幕的分辨率。

声明式编程

WPF使用XAML(Extensible Application Markup Language)来进行用户界面的设计,这让做过WebForm开发的程序员找到了熟悉的感觉。而且,这将有助于界面设计和逻辑代码编写的分离,界面设计者和逻辑代码编写者之间事先做一些约定,然后界面设计者就可以使用Expression Blend来设计界面,同时逻辑代码编写者写后台逻辑。这种开发方式,大大的提高了开发速度。

易于部署

WPF是构建在ClickOnce之上的,这使得WPF的Web浏览器程序的部署支持性更好。同时,WPF也可以使用Windows Installer来部署WPF应用程序。WPF的浏览器应用程序运行在一个沙箱中,这更好地防止了出于恶意目的对客户端电脑的损害的行为。

文档可移植性

令人激动的是,WPF包含了一系列新的文档打印技术。联合Microsoft Office 12的发行,WPF使用Open Packaging Conventions,这是一种支持压缩、可自定义元数据、数字签名和权限管理等的标准。WPF所包含的XPS是一种和PDF类似的技术,它允许文档在不安装任何打开程序的条件下可以跨计算机被分享。

体系结构

其中需要说明的是milcore.dll,它是渲染系统的核心,也是Windows Vista之后的核心系统组件。比如桌面窗口管理器(Desktop Window Manager,DWM)就是使用这个程序集来渲染桌面。

类层次结构

1.DependencyObject类

通过继承它,可以获得对依赖属性(DependencyProperty)的支持。

2.Visual类

任何继承它的类,都可以在窗口显示出来。

3.UIElement类

它为WPF的本质特征(LIFE,即布局,输入,焦点,事件)提供支持。

4.FrameworkElement类

它实现了UIElement类中的一些成员,并进行了一些功能扩展。

5.Panel类

它是所有布局容器(如StackPanel,DockPanel)的基类。

6.Control类

主要是一些和用户交互的控件,包含内容控件,条目控件,装饰控件等。

总结

这里主要是WPF的一些概念性东西,大部分来源于书籍,通过整理,有个大概的了解。

WPF学习(1)WPF概述的更多相关文章

  1. 当前位置: 银光首页 > WPF > WPF学习教程 > WPF: ShowDialog() 切换到其他应用窗口后,再切换回来无法让子窗口总在最上方

    转自http://www.silverlightchina.net/html/study/WPF/2012/0723/17608.html

  2. WPF学习概述

    引言 在桌面开发领域,虽然在某些领域,基于electron的跨平台方案能够为我们带来某些便利,但是由于WPF技术能够更好的运用Direct3D带来的性能提升.以及海量Windows操作系统和硬件资源的 ...

  3. 1. WPF学习之概述

    <深入浅出WPF> 前言: C#专业的朋友推荐的WPF入门书籍<深入浅出WPF>,没学过的朋友从今天开始和我一起开启WPF学习之旅吧! 什么是WPF? WPF 是windows ...

  4. WPF学习之路初识

    WPF学习之路初识   WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...

  5. WPF学习开发客户端软件-任务助手(下 2015年2月4日代码更新)

    时光如梭,距离第一次写的 WPF学习开发客户端软件-任务助手(已上传源码)  已有三个多月,期间我断断续续地对该项目做了优化.完善等等工作,现在重新向大家介绍一下,希望各位可以使用,本软件以实用性为主 ...

  6. WPF学习05:2D绘图 使用Transform进行控件变形

    在WPF学习04:2D绘图 使用Shape绘基本图形中,我们了解了如何绘制基本的图形. 这一次,我们进一步,研究如何将图形变形. 例子 一个三角形,经Transform形成组合图形: XAML代码: ...

  7. WPF学习之资源-Resources

    WPF学习之资源-Resources WPF通过资源来保存一些可以被重复利用的样式,对象定义以及一些传统的资源如二进制数据,图片等等,而在其支持上也更能体现出这些资源定义的优越性.比如通过Resour ...

  8. WPF学习拾遗(二)TextBlock换行

    原文:WPF学习拾遗(二)TextBlock换行 下午在帮组里的同事解决一个小问题,为了以后方便,把就把它收集一下吧. 新建一个TextBlock作为最基础的一个控件,他所携带的功能相对于其他的控件要 ...

  9. WPF学习(8)数据绑定

    说到数据绑定,其实这并不是一个新的玩意儿.了解asp.net的朋友都知道,在asp.net中已经用到了这个概念,例如Repeater等的数据绑定.那么,在WPF中的数据绑定相比较传统的asp.net中 ...

  10. WPF学习(7)命令

    在上一篇中,我们学习了WPF的路由事件,而在本节将学习一个更为抽象且松耦合的事件版本,即命令.最明显的区别是,事件是与用户动作相关联的,而命令是那些与用户界面想分离的动作,例如我们最熟悉的剪切(Cut ...

随机推荐

  1. hdu4734(数位dp)

    hdu4734 给定 a和b, 问区间[0,b]内有多少个数字的f(i) <=f(a) dp[i][s] 表示i位的数字的f<=s 所以比如如果第i+1位选择数字5之后, 那么只要剩下的i ...

  2. 从lca到树链剖分 bestcoder round#45 1003

    bestcoder round#45 1003 题,给定两个点,要我们求这两个点的树上路径所经过的点的权值是否出现过奇数次.如果是一般人,那么就是用lca求树上路径,然后判断是否出现过奇数次(用异或) ...

  3. SQL Server无法连接到(local)问题的解决的方法

    今天在使用数据库的时候突然发现,SQL Server08竟然连接不上了.问题如图所看到的: 于是在网上搜索了一下这个问题,发现有非常多相似的提问,既然这个问题不是少数人遇到,看来这个问题还是值得研究一 ...

  4. 使IIS Express支持其他网络客户端访问

    今天尝试利用Android客户端Web浏览器访问VS2012 IIS Express调试中的Web应用,发现这个IIS Express仅支持localhost主机名地址访问. 上网搜索找到解决方案,几 ...

  5. 【安德鲁斯】基于脚本的数据库&quot;增量更新&quot;,如果不改变,每次更新java代码、!

    思维: 1.当然,它是基于SQLiteOpenHelper.onCreate(第一个呼叫建立).onUpdate(当所谓的升级计划) 2.用"脚本"(脚本制作详细方法问度娘)做数据 ...

  6. Mono+CentOS+Jexus

    在.NET Core之前,实现.Net跨平台之Mono+CentOS+Jexus初体验准备工作 本篇文章采用Mono+CentOS+Jexus的方式实现部署.Net的Web应用程序(实战,上线项目). ...

  7. C++ Primer高速学习 第一章 获得二:输入和输出 (IO)

    什么是输入输出.即Input-Output,缩写是非常装B的IO?请看经典民间解释: C++语言的输入输出是指信息从外部输入设备(如键盘.磁盘等)向计算机内部(内存)输入(即Input)和从内存向外单 ...

  8. virtio-blk分析

    和virtio-network相同,virtio-blk驱动程序使用Virtio机制Guest它提供了一个高性能的设备I/O方法.我们期待在这里virtio-blk实现. [点击查看全文] http: ...

  9. 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写

    基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ...

  10. 清除Android工程中没用到的资源(转)

    项目需求一改再改,UI一调再调,结果就是项目中一堆已经用不到但却没有清理的垃圾资源,不说工程大小问题,对新进入项目的人或看其他模块的代码的人来说,这些没清理的资源可能也可能会带来困扰,所以最好还是清理 ...