[WPF系列]基础学习(一) WPF是什么?

引言

 

学习之前,我们首先要大概了解下WPF诞生的背景以及它所能解决的问题或者新颖之处。

WPF简介

 

WPF的全称是WindowsPresentationFoundation,是微软新发布的Vista操作系统的三大核心开发库之一,其主要负责的是图形显示, 所以叫Presentation(呈现)。

 

微软公司早在2003年洛杉矶的PDC上就公布了一个代号为Avalon的项目,他们将其视为下一代用户界面技术,并且得到了开发者和用户的一致赞同。在2005年的PDC上,微软公司展示了比2003年更加完整的Avalon版本,并给它取了一个官方新名称:WindowsPresentationFoundation(WPF),现在

 

作为新的图形引擎,WPF是基于DirectX的,当然增加了很多新的功能。其2D和3D引擎的强大看看Vista以后的Windows界面就明白了,再加上其对Aero图形引擎的 支持,更加让你刚到神奇。我这里用是window7,效果比起WIndow8以及即将发布的window10还是有差距的。下面的这个Window7中的3D效果大家应该都知道(window+tab)。

 

 

那么,WPF是什么,为什么它那么重要呢?

首先,它清晰而又有效的将用户界面和程序实现分开。它使得设计可视化的用户界面的设计者和编写内部核心代码的开发人员可以并行工作。这是非常重要的:

  • 外观标记语言和后台代码分开,使开发和维护成本减少
  • 将两者分开,软件开发公司可以使得设计者们集中精力将设计工作做得更好,同时让开发者支持他们。同时提高了
  • 它更好的支持应用软件的国际化。不同的独立的界面可以使用不同的本地化方案,而内部的代码是通用的。

 

 

WPF使用一种基于XML的语言来定义用户界面从而完成上述的工作。这种语言被称为XAML(Extensible Application Markup Language)。,XML应用程序标记语言其次,WPF使用一种基于向量而不是基于光栅的绘制引擎,这和早前的Windows的绘制引擎是截然不同的。光栅绘制引擎通过在屏幕上绘制象素点来绘制表面。象素只是点,这样如果屏幕分辨率(DPI,每英寸点)增加了,它的效果就会变差。随着现在屏幕都采用超高DPI的分辨率,字体必须使用成百上千个DPI来达到一定的浏览效果。比如微软Word里缺省的英文字体12号的TimesNewRoman,在现在的普通分辨率情况下效果还可以但是到了超高分辨率的显示器上效果就不行了。管理这些基于光栅的图像的点将会消耗大量的处理能力,同时也是很浪费的。而采用基于向量的方式来替代象素,在一个可扩展的坐标系里绘制字体和其他线型,使得它们可以独立 于DPI。想想WindowsMetafile(WMF)和位图文件(BMP)之间的差距你就明白了。同时,向量图也使得一些变换如3D,旋转和动画变得更加方便和易于操作。下图引用自MSDN的WPF介绍页面。

由于XMAl和后台代码的分离所以也为WPF前台展示带来了新的设计模式。

 

 

WPF应用程序常用到展示层设计模式MVVM

常用到展示层设计模式:

 

 

MVVM模式关系示意图

 

 

基于WPF前台XAML和后台代码分开的结构, MVVM是WPF应用程序推崇的最佳设计模式,现在MVVM模式框架也有不少:

Microsofts MVVM Toolkit 现在不再更新,感兴趣可以看下源码

MVVM Foundation

现在不再更新
MVVM最初实现

MVVM Light Toolkit

看名字就知道是轻量级的MVVM框架,现在在移动客户端也有不少应用
https://github.com/Caliburn-Micro
https://caliburn.codeplex.com/
框架比较大,但现在也有个精简版,并且主推精简版

patterns & practices: Prism

微软的开源代码,持续更新中,
微软主推,当然优势是天生的.

 

至于这些框架该怎么选择,后续深入研究。目前由于笔者只选择了Prism来开发,其他框架后续慢慢接触。

 

WPF技术展望

随着window系统的更新,相信大家都看到了微软的互联梦正在一步一步实现,微软发布Windows 10系统 采用跨平台设计,而WPF在新版的系统中占有比也越来越多,所以目前来看WPF开发前景相当乐观。虽然现在看起来微软的WPF更新动作不大,但据说是在研发下一代WPF,让我拭目以待。

 

总结

 

本文只是简单介绍了下诞生历史,接着介绍了WPF新颖之处Markup and Code-Behind (展示和代码分离),从而引出了WPF特有的MVVM展示模式。最后简单列举了一些基础或常用MVVM开源框架。

下一篇我们将正式开始学习WPF。

 

参考文献

what-is-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

Is WPF Dead? – NO!

时间: 2024-10-16 16:23:04

[WPF系列]基础学习(一) WPF是什么?的相关文章

Node.js系列基础学习----安装,实现Hello World, REPL

Node.js基础学习 1:简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好 2:安装 à安装node.js 在官网安装自己win版本的node.js的版本,下载,安装完毕后在运行中输入node -v若是出现版本号就证明安装成功. à安装n

[WPF系列]-基础系列 Trigger, DataTrigger & EventTrigger

So far, we worked with styles by setting a static value for a specific property. However, using triggers, you can change the value of a given property, once a certain condition changes. Triggers come in multiple flavors: Property triggers, event trig

[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 dependency properties of a given element. It creates and attaches a new property to the existing property and let's you specify the PropertyChangedCallba

[WPF系列]从基础起步学习系列计划

引言 WPF技术已经算不什么新技术,一搜一大把关于WPF基础甚至高级的内容.之前工作中一直使用winform所以一直没有深入学习WPF,这次因项目中使用了WPF技术来实现比较酷的展示界面.我在这里只是把个人学习WPF的过程做些总结,同时也为想我这样的初学WPF的提供一点帮助.我争取做到由浅入深,系统全面.不足之处还请大家指教. 学习工具 俗话说:“工欲行其事,必先利其器”,在学习WPF时我们应该找几个工具提高我们的学习和开发效率. kaxaml 一个实时查看xaml代码和呈现的工具.可从这里下载

【WPF系列】基础学习-XAML

引言 WPF框架中已经提到,WPF框架提供XAML基本服务.WPF中XAML的引入向开发者提供UI设计和代码分离的编程型.XAML是WPF中提出的一个具有重要意义的新技术,基本涉及WPF中所有UI开发.本设计所有UI代码都采用XAML.   XAML综述 XAML(可扩展应用标记语言的简称,可以称为zammel)是一种被用于.net对象实例的标记语言.尽管XAML是一种可以被应用于不同问题领域的技术,但它最初被设计时是作为WPF的一部分,WPF允许Windows开发人员建设富用户界面.你可以用相

WPF基础学习笔记(一)Dependency Object 和 Dependency Property

.依赖属性是WPF个人觉得对精彩和最有特色的部分.所以特地先拿出来. 首先要实现Dependency Property 则必须要继承Dependency Object.如果看下WPF的基础控件其实都间接或者直接继承Dependency Object,这点规律性我在后面再做规律陈述. 首先Dependency Object 我搬下书的描述 Only the thread that the Dispatcher was created on may access the DispatcherObje

WPF基础学习笔记整理 (一)

基础知识: WPF:Windows Presentation Foundation,用于Windows的现代图形显示系统: WPF用于编写应用程序的表示层: 引入“内置硬件加速”和“分辨率无关”: Silverlight是WPF的一个子集,是WPF的“网络版”(WPF/E): WPF的开发理念:“数据驱动”,数据驱动UI,数据第一,空间第二: 数据与界面之间的桥梁是Data Binding: MVVM:Model-View-ViewModel: XMAL:Extensible Applicati

WPF基础学习笔记整理 (九) 资源

基础知识: WPF的资源是一种保管一系列有用对象的简单方法,方便于重用. WPF UI元素的Resources属性,都是继承自FrameworkElement列,且其类型为ResourceDictionary. ResourceDictionary在保存资源时,会将资源转换为object类型.XAML编译器能根据标签的Attribute自动识别资源类型,而C#中则需要我们介入转换. WPF资源网站:http://wpf.codeplex.com/ StaticResource是在程序载入内存时对

WPF入门基础教程之布局(1)

WPF的常用布局控件的介绍及使用方法 (1) 开局一张图,内容全靠写,本系列的文章, 主要针对刚入门.亦或是从 winform/bs转过来的开发人员快速入门的指南, 相对于其它一些文章中会详细的从项目如何建立到其实现的原理及组成部分, 本系列的文章则旨在如果快速的构建: 从布局.样式.触发器.绑定.显示.MVVM架构一系列的阶段学习,构建一个基础的呈现以达到学习的目的. WPF相关资料合集 (含书籍.框架.及开源UI组件等) WPF编程宝典.pdf 深入浅出WPF.pdf MaterialDes