[WPF系列]基础学习(一) WPF是什么?
引言
学习之前,我们首先大概了解下WPF诞生的背景以及它所能解决的问题或者新颖之处。WPF作为微软新一代的用户界面技术,
WPF简介
WPF的全称是WindowsPresentationFoundation,是微软新发布的Vista操作系统的三大核心开发库之一,其主要负责的是图形显示, 所以叫Presentation(呈现)。
微软公司早在2003年洛杉矶的PDC上就公布了一个代号为Avalon的项目,他们将其视为下一代用户界面技术,并且得到了开发者和用户的一致赞同。在2005年的PDC上,微软公司展示了比2003年更加完整的Avalon版本,并给它取了一个官方新名称:WindowsPresentationFoundation(WPF),现在WPF已经发展到了4.5版本。
作为新的图形引擎,WPF是基于DirectX的,当然增加了很多新的功能。其2D和3D引擎的强大看看Vista以后的Windows界面就明白了,再加上其对Aero图形引擎的 支持,更加让你刚到神奇。我这里用是window7,效果比起WIndow8以及即将发布的window10还是有差距的。下面的这个Window7中的3D效果大家应该都知道(window+tab)。
WPF有哪些特性
WPF
框架为媒体、用户界面设计和文档提供的解决方案比开发人员现有的解决方案都要好,WPF框架在设计时考虑了可扩展性和可维护性,开发人员能够在WPF中创建自己的控件,还可以通过对现有的WPF控件进行改造创建新的WPF控件。WPF框架是用于形状、图像、视频、动画、文档、三维,以及用于放置控件和内容的面板的一系列控件,这些控件和内容的面板的一系列控件是WPF框架的核心。WPF应用程序提供了若干WPF应用程序开发所需要的控件,开发人员同样能够对控件进行拖放操作实现应用程序布局和开发。作为下一代图形子系统,WPF集成各种输出服务:用户界面、二维和三维图形和图像、基于文档的打印和呈现、语音以及音频和视频服务。通过为所有这些服务提供基于一个框架的托管代码,WPF
使提供新的、丰富的用户体验成为可能,这在以前很难实现。WPF的框架为.NET开发人员所熟悉,最终将减少构建数据绑定应用程序所需的代码。此外,WPF引入新的增强服务(例如动画),同时保留与为GDI/GDI+ 编写的现有代码的互操作性。WPF框架所提供的服务如表所示:
分类显示
基本服务 |
XAML, Property System, Input & Eventing , Accessibility |
媒体服务 | 2D, 3D, Audio, Video, Text, Imaging, Animation, Effects, Composition Engine |
文档服务 | XPS Documents, Open Packaging Conventions |
用户界面服务 | Application Services, Deployment, Controls, Layout, Data Binding |
参考:http://www.dotnet-tricks.com/Tutorial/wpf/GHPa021013-Introduction-to-WPF.html
WPF技术展望
随着window系统的更新,相信大家都看到了微软的互联梦正在一步一步实现,微软发布Windows 10系统 采用跨平台设计,而WPF在新版的系统中占有比也越来越多,所以目前来看WPF开发前景相当乐观。虽然现在看起来微软的WPF更新动作不大,但据说是在研发下一代WPF,让我拭目以待。
总结
本文只是简单介绍了下诞生历史,接着介绍了WPF新颖之处Markup and Code-Behind (展示和代码分离),从而引出了WPF特有的MVVM展示模式。最后简单列举了一些基础或常用MVVM开源框架。
下一篇我们将正式开始学习WPF。
参考文献
Comparison of Architecture presentation patterns MVP(SC),MVP(PV),PM,MVVM and MVC
MVC,MVP and MVVM: A Comparison of Architectural Patterns
Understanding MVC, MVP and MVVM Design Patterns
https://www.slideshare.net/login?from=loggedout_slideview_navbar
http://www.codeproject.com/Articles/140611/WPF-Tutorial-Beginning
[WPF系列]基础学习(一) WPF是什么?的更多相关文章
- WPF系列(1)WPF和XAML基础
终于下定决心开始更新WPF一个系列的文章,这里主要是出于两个目的,一是自己对所学的知识有一个系统的总结,二十希望能对其他人有些帮助,如果您觉得我写的不好,欢迎提意见. 那么既然我要开始写WPF,那我们 ...
- Node.js系列基础学习-----回调函数,异步
Node.js基础学习 Node.js回调函数 Node.js异步编程的直接体现就是回调,异步编程依托回调来实现,但不是异步.回调函数在完成任务后就会被调用,Node有很多的回调函数,其所有的API都 ...
- Node.js系列基础学习----安装,实现Hello World, REPL
Node.js基础学习 简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一 ...
- [WPF系列]基础Combox
示例 参考 WPF combobox SelectedValue binding to string Confused with wpf ComboBox DisplayMemberPath, ...
- [WPF系列]-基础系列 Property Trigger, DataTrigger & EventTrigger
So far, we worked with styles by setting a static value for a specific property. However, using trig ...
- [WPF系列]-基础系列 TabControl应用
引言 Tabcontrol控件也是我们在项目中经常用到的一个控件,用它将相关的信息组织在一起分类显示. 简介 ========================================= ...
- [WPF系列]基础 Listening to Dependency Property change notifications of a given Element
I want to share this great post from Anoop that shows a easy way to add a notification system to dep ...
- [WPF系列]从基础起步学习系列计划
引言 WPF技术已经算不什么新技术,一搜一大把关于WPF基础甚至高级的内容.之前工作中一直使用winform所以一直没有深入学习WPF,这次因项目中使用了WPF技术来实现比较酷的展示界面.我在这里只是 ...
- 【WPF系列】基础学习-XAML
引言 WPF框架中已经提到,WPF框架提供XAML基本服务.WPF中XAML的引入向开发者提供UI设计和代码分离的编程型.XAML是WPF中提出的一个具有重要意义的新技术,基本涉及WPF中所有UI开发 ...
随机推荐
- CSS技巧(一):清除浮动
什么是CSS清除浮动? 在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高 ...
- 图片全部加载完成之后再显示页面ui,公司项目里用上,自己写的几行代码
说明: -----onload事件 这里我并没有考虑ie的兼容性 因为项目是移动端的: -----求大神指正~ -----自己测试正常 页面没加载完之前会有一个提示 /************** ...
- Visual Studio.NET单选题
在Visual Studio.NET窗口中,在__________窗口中可以察看当前项目的类和类型的层次信息. A. 解决方案资源管理器 B. 类视图 C. 资源视图 D. 属性 在线答题:http ...
- java对email邮箱的真实、有效性验证
三种验证邮箱有效性的方式: 方式1: public static boolean checkEmail(String email) { if (!email.matches("[\\ ...
- PHP7 redis扩展安装
1.安装redis (1)下载:https://github.com/phpredis/phpredis/tree/php7 或下载http://pan.baidu.com/s/1i5DFrjn用sa ...
- 10、ASP.NET MVC入门到精通——Model(模型)和验证
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 模型就是处理业务,想要保存.创建.更新.删除的对象. 注解(通过特性实现) DisplayName Required StringLengt ...
- JMeter专题系列(七)聚合报告之 90% Line
JMeter 官网原文: 90% Line - 90% of the samples took no more than this time. The remaining samples at lea ...
- Understanding glibc malloc【待译】
今天尝试用Valgrind调试程序时,发现堆和栈的一些问题没有理解透彻,于是Google了下"Memory Layout C",接着就通过Memory Layout of C Pr ...
- 使用requireJS的shim参数 解决插件 jquery.ui 等插件问题
没有requireJS框架之前,如果我们想使用jquery框架,会在HTML页面中通过<script>标签加载, 这个时候jquery框架生成全局变量$和jQuery等全局变量.如果项目中 ...
- jquery.dataTable.js 基础配置
$(document).ready(function () { $('#dataTables-example').DataTable({ responsive: true, "bPagina ...