一起谈.NET技术,WPF 基础到企业应用系列1——开篇有益

简介: 1.开篇前言关于本人——圣殿骑士刚入住博客园和51CTO写技术博客,目前主要在一家外资企业从事项目管理、技术架构及企业技术培训工作。由于工作和项目需要,所以对一些技术进行了较为深入的研究,之前在整个公司做过一些技术专场的培训,由于每次时间较短且人员较多的关系,没能讲得很透彻,所以挺对不住那些同事的。

1.开篇前言

关于本人——圣殿骑士刚入住博客园51CTO写技术博客,目前主要在一家外资企业从事项目管理、技术架构及企业技术培训工作。由于工作和项目需要,所以对一些技术进行了较为深入的研究,之前在整个公司做过一些技术专场的培训,由于每次时间较短且人员较多的关系,没能讲得很透彻,所以挺对不住那些同事的。现在在园子里开一个博客,希望能把所学的微薄知识书写出来,以供大家参考。近期将针对这些培训专场推出“OO到设计模式”、“WCF基础到企业应用”、“WPF基础到企业应用及优化”、“Silverlight基础到企业应用及优化”、“Windows Azure基础到企业应用”等系列博文,由于是自己对这些技术的使用总结和心得体会,错误之处在所难免,怀着技术交流的心态,在博客园发表出来,所以希望大家能够多多指点,这样能使一部分人受益同时也能纠正我的错误观点,以便和各位共同提高!

关于WPF基础到企业应用系列——这几年给自己的感觉就是一直很忙,也不知道在忙些什么,反正生活和工作都不消停,一直说写书,但是写了两章就一直摆在那里,在写这个专题前花了点时间写了一个31 天重构学习笔记索引,感觉重新找回了那份心静的感觉,所以打算继续写一个系列文章,全当总结和技术交流。开篇之前犹豫了很久:1,面对自己喜欢的这么多技术,不知道先写哪一个系列为好(OO与设计模式、WCF、WPF、Silverlight、.NET多线程编程、LinQ、AOP和IOC在.net项目中综合应用、ASP.NET MVC、Windows Azure等),最后打算先写WPF,然后再Silverlight,进而写其他的系列。毕竟WPF照现在的这种趋势发展,迟早会在C/S应用程序中独占鳌头。Silverlight也必将在企业级开发当中逐渐应用起来。2,WPF从2007开始接触以来,使用比较多,也相对比较熟悉,况且作为WPF子集的Silverlight,讲了WPF,Silverlight就相对简单了。3,主要是考虑怕自己书写的文章不能教导于人,反而误导他人。所以怀着对这些问题的考虑,我一定会尽心尽力的写好每一篇文章,不负大家所望!

2.内容提纲

· 1.开篇前言

· 2.内容提纲

· 3.系列安排

· 4.开发工具

· 5.参考资料

· 6.面试问题

· 7.关于前景

· 8.效果展示

· 9.本文总结

3.系列安排

· 1. 开篇有益

· 2. WPF基础(历史、版本、结构、框架)

· 3. WPF介绍 、用WinForm和WPF实现同一个例子的案例。

· 4. Application、window、多线程、XAML、逻辑树与可视树及内容模型

· 5. 使用面板做布局(几种布局控件的XAML及CS代码,综合布局等)

· 6. 依赖属性、附加属性(基本、继承、元数据)

· 7. 路由事件、附加事件

· 8. 命令

· 9. WPF控件分类介绍与使用技巧(ContentControl、HeaderedContentControl…… Decorator)

· 10. 尺寸缩放、定位与变换元素

· 11. 资源

· 12. 数据绑定(基本、值转换、验证、集合的筛选、排序、分组、主从、数据提供者)

· 13. 样式

· 14. 模板

· 15. 多语言、皮肤和主题

· 16. 2D图形

· 17. 3D图形

· 18. 动画(几种动画的应用)

· 19. 音频、视频、语音

· 20. 文档、打印、报表

· 21. 用户控件和自定义控件

· 22. Win32、Windows Form以及ActiveX之间的互用性

· 23. 构建并部署应用程序(ClickOnce部署、微软setup /InstallShield+自动更新组件)

· 24. WPF的模式讲解及实例(MVC Demo)

· 25. WPF的模式讲解及实例(MVP Demo)

· 26. WPF的模式讲解及实例(MVVM Demo)

· 27. 性能优化(WPF项目的瓶颈)

· 28.一个完整WPF项目(普通架构版)

· 39. 一个完整WPF项目(MVVM架构版)

· 30. WPF 4.0新功能

 

4.参考资料

      提到参考资料,大家第一感觉就是MSDN,当然我也不例外,这个网站基本上是学习微软技术的首选站点,除了这个网站以外,我还参考了很多其他的社区和网站,基本上都在.NET 技术社区之我见(英文篇)做了介绍,比如CodeProject、CodePlex windowsclient、C# Corner等,除了这些网站还有一些国外技术专家blog。

1.       Programming Windows Presentation Foundation

http://www.amazon.com/Programming-Windows-Presentation-Foundation-Chris/dp/0596101139/sr=8-2/qid=1164814449/ref=pd_bbs_2/104-6804148-3392750?ie=UTF8&s=books

这本书出得很早,在学WPF之初就是这本书和MSDN作为教材,优点:书中讲解的语言浅显易懂并且讲解的顺序和思路也很清晰,内容也是面面俱到,例子也举得很恰当。缺点是讲得很简单,稍偏向于入门书籍;书中的理论和例子都是针对于WPF的测试版,所以和正式的版本有一些出入,你会发现从书中拷贝下来的例子在程序中不能运行,这个你也不要见怪,只要能明白原理就行。

2.       Windows Presentation Foundation Unleashed (WPF) (Unleashed)

http://www.amazon.com/Windows-Presentation-Foundation-Unleashed-WPF/dp/0672328917/sr=8-5/qid=1164814449/ref=pd_bbs_sr_5/104-6804148-3392750?ie=UTF8&s=books

这本书是WPF正式版出来以后出版的,所以和上一本比起来就有很大的优势,并且讲的内容也比上一本详细,所以在很长一段时间,除了MSDN,它就成了很权威的教材。在阅读的时候虽然没有Programming Windows Presentation Foundation那么轻松,但同时这里面的例子会给你带来很强的成就感。

这本书是Adam Nathan写的,Adam是WPF Team的核心成员,也是WPF的专家。

3.       Applications = Code + Markup: A Guide to the Microsoft Windows Presentation Foundation

http://www.amazon.com/Applications-Code-Markup-Presentation-Foundation/dp/0735619573/sr=8-1/qid=1164814449/ref=pd_bbs_1/104-6804148-3392750?ie=UTF8&s=books

WPF官方网站(http://wpf.netfx3.com)上推荐的书。

这本书是Charles Petzold写的,也是WPF的专家。所以里面有很多的技术内幕和使用技巧都值得我们学习和操练,但我一直没有坚持看完,原因很简单,这本书不太适合入门,所以当时就没有选择这一本书,到学会了WPF以后,又经常关顾于国外的各大社区和论坛,上面很多内容可以解除你对WPF学习和使用中的疑问,所以它就一直搁置到了一边,直到写这个系列之前才翻完大半。

4,WPF4是大家都期待的,因为前面几个版本存在着一些问题,如性能优化不上去、某些特性不支持等原因。那么WPF4的公布,让很多人都比较欣喜,如下第一排3本就是针对WPF4(VS2010)的,所以有兴趣的同仁也可以去找相关的资源。


clip_image001

 

clip_image002

 

clip_image003

 

clip_image004

 

clip_image005

 

clip_image006

 

clip_image007

 

clip_image008

 

clip_image009

 

当然国内也有一些书籍可以参考,如微软经典红皮书对WPF的讲解可以作为入门学习,还有WPF揭秘,虽说有一些翻译上的小错误,但是整体还是可以的。

 

5.开发工具

大部分的应用程序都会使用如下配置和工具开发:

CPU:2.40GHz  内存2G

操作系统:Windows XP+SP3英文版

开发工具:Visual Studio 2008+SP1英文版

Expression Design 3

Expression Blend 3

Expression Encoder 3

由于最近用上了一台新机器,也可能会使用它做某些开发:

CPU:i7四核 2.8GHz    内存:4G   硬盘:1T       显卡:GTX260 高清2G     显示器:24高清

操作系统:Windows 7  Professional

开发工具:Visual Studio 2010

Expression Design 4

Expression Blend 4

Expression Encoder 4

6.面试问题

     关于面试这个问题,每个公司都会有自己的面试要求,尤其是美国和印度对WPF的重视程度,让WPF的应用逐渐变得广泛。面试题目也变得多了起来,之前承担了一些WPF的面试工作,所以收集、整理和写了一些面试题目,以供大家参考,由于是自己对这方面的一些看法,所以有错误的地方也请大家见谅,对每个面试者,我觉得都要以尊敬的态度,不管技术如何,不管学历如何,人都有他擅长的一方面。同时你的理解和他的理解可能各有千秋,也不要把某些观点强加于人而傲视别人。所以我觉不管是面试者或者是被面试者,都要怀着谦虚和尊敬别人的态度。

初级工程师

  • 较强.NET 2.0 基础知识& 愿意学习新技术
  • 解释什么是依赖属性,它和以前的属性有什么不同?为什么在WPF会使用它?
  • 什么是样式(Style)?
  • 什么是模板(template)?
  • 绑定(Binding )的基础用法
  • 解释这几个类的作用及关系: Visual, UIElement, FrameworkElement, Control
  • 视觉树vs 逻辑树?
  • 属性变更通知(INotifyPropertyChange 和ObservableCollection)
  • ResourceDictionary
  • UserControls
  • 事件的三种方式(冒泡、直接、隧道)

中级工程师

  • Routed Events(路由事件) & Commands (命令)
  • 绑定详解(包括绑定到单一属性、实体、集合、值转换、触发机制、验证等)
  • 怎样布局一个漂亮的UI(你们以前的项目是怎么做的?)
  • WPF和之前的技术交互(WPF/WinForms)
  • animations 、storyboarding
  • ClickOnce 部署(优点和缺点)或者是自己通过微软setup/InstallShield+自己的自动更新组件。
  • 样式、主题和触发器
  • 自定义控件
  • 怎样才能工作线程更新UI?

高级工程师

  • 什么是attached behavior(附加行为或者附加事件)?
  • PRISM,CAL & CAG等等框架,是否使用过?你们是怎么用的?没有使用的话,解释一下自己的开发模式和框架。
  • 怎样才能工作线程更新UI?
  • WPF 3D和动画的应用(是否使用过?用过哪些?)。
  • Silverlight和WPF的异同。
  • 怎么开发自定义控件?可以简单介绍一下自己开发的控件。
  • 你之前的WPF项目开发流程是怎样的?
  • 三种开发模式(MVVM/MVP/MVC)的理解。
  • WPF的性能调整(你是怎么优化WPF性能的?)
  • 聊聊你做WPF的一些经验和体会。

7.关于前景

  关于WPF的前景,我不想做过多的介绍,有很多人已经对这方面做了很深入的研究,那么我们就可以做一下简单的总结:

由于WPF带来了很多优秀的功能和特性:

       1.超强的用户体验;
       2.简单便捷的部署方式(易于更新升级);
       3.更简便的编程方式。
       4,实现绚丽效果比较简单。

所以在以下几个方面得到了很广泛的应用:

 1.企业应用系统(主要做一些管理系统,国内已经很多公司在使用了);
 2.一些Silverlight目前很难达到的效果同时又要求能从网络浏览到(如Asahiyama Zoo (日本北海道旭山动物园))
 3.桌面应用程序(如雅虎推出即时通讯软件和QQ等)。
 4,一些对效果要强较高应用的产品

      WPF正因为有那么多优秀的特性和功能并且微软一直在这方面努力,我们相信它一定会带来一场C/S用户程序的革命。对这个应用,我也曾专门了解过,在国内现在很多公司都在对WinForm进行升级到WPF,在国外如美国和印度等国家,对WPF的使用也逐渐普遍起来。上周公司首席科学家请客到新加坡一家六星级酒店吃饭,我以项目组附带的形式很荣幸也被邀请,旁边刚好是一个印度的Architect,我也顺便问了他们国家对Windows azure、WPF和Silverlight等技术的应用,发现他们国家对这些技术应用得很早并且也形成了自己的一些成熟体系。最近公司做的项目有很多以色列人来演示他们做的智能系统(UI用WPF实现,智能扑捉用摄像头,这样人站在电视机前面就可以用自己的身体玩很多体验,比如你可以真实体验三维游戏、你可以用你的身体直接做很多网络里的事情),他们比我们现在做的系统(我们的系统是用WPF做UI,然后在电视上通过蓝牙和遥控器实现点播网络视频、游戏和新闻等)高级很多,同时也让我们看到他们对这方面的研发能力。所以相信WPF一定可以逐渐流行起来,就让我们拭目以待。

8.效果展示

      上面谈了这么多WPF的东西,有些没有接触过WPF的同仁也许会问:WPF到底能实现什么样的效果?WPF在哪些公司用到过?WPF究竟能不能应用于企业开发,那么我这里就简单收集了一些WPF的一些效果图和一些商业运用产品截图,希望大家看到以后,能对WPF有一个全面的了解。

WPF部分例子的效果图:

clip_image001

clip_image002

clip_image003

clip_image004

clip_image006

clip_image005

clip_image007

WPF企业使用案例(部分案例介绍来自网络):

AMD Live  : AMD为提升PC用户数字娱乐体验的新平台,一个结构化、可视化的在线照片、音乐、视频的播放软件
从这个界面来看真的是非常强大,娱乐性已经与苹果系统几乎无异。

下载地址:http://experience.amdlive.com/us-en/Home-Page/AMD-LIVE-Explorer.aspx

 

这位仁兄(http://www.cnblogs.com/lovebread/archive/2010/05/06/1728492.html)也用Blend模拟了一个比较相似的界面:


Chosun Daily iReader :基于WPF技术做的朝鲜日报阅读器,可以看到高保真影像。


Entellium Rave:中小企业CRM提供商 Entellium
专供中小企业使用的 CRM系统,漂亮的界面与复杂内容的结合,逻辑层与表现层的分离使得这种平衡得以实现。



 

WPF概念版QQ

图片来自于:http://www.cnblogs.com/technology/,这位仁兄详细体验了WPF带来的快感,更多图片也可以访问他的博客。

 

 



 

Yahoo:雅虎推出即时通讯软件

功能很强大并且还可以实现很多自定义操作。

 

Asahiyama Zoo (日本北海道旭山动物园)。
是微软和日本北海道旭山动物园共同制作的动物园虚拟体验工具,你可以通过它对动物园进行虚拟体验,实现了很好的效果。

地址:http://www.asahiyamazoo-aict.jp/asahiyamazoo.xbap

 


9.本文总结

     本文从几个方面谈了WPF系列安排、开发工具、参考资料、面试问题、关于前景、效果展示等内容,通过这篇文章,我们主要了解什么是WPF以及WPF到底能给我们带来哪些体验。由于对Windows Live Writer使用不习惯和它发布日志有问题等原因,这篇文章花了5个多小时才完成,那么从下一次起,我将和大家一起进入“WPF基础到企业应用系列之旅”!

  最后圣殿骑士会尽心尽力写好这个系列,同时由于是自己对这些技术的使用总结和心得体会,错误之处在所难免,怀着技术交流的心态,在博客园51CTO发表出来,所以希望大家能够多多指点,这样在使一部分人受益的同时也能纠正我的错误观点,以便和各位共同提高,后续文章敬请关注!

目录
相关文章
|
15天前
|
人工智能 前端开发 Devops
.NET技术在现代开发中的作用:.NET技术的核心价值、在现代应用开发中的实际应用、以及面临的挑战与未来趋势。
.NET技术是软件开发领域的核心力量,本文从其核心价值、实际应用及未来挑战三方面进行探讨。它支持多种语言,提供强大的开发工具和丰富的类库,并具备跨平台能力。在现代应用开发中,.NET广泛应用于企业级系统、Web应用、移动应用、云服务和游戏开发等领域。面对性能优化、容器化、AI集成等挑战,.NET持续创新以适应不断发展变化的技术环境。
33 4
|
15天前
|
人工智能 开发框架 .NET
.NET技术的强大功能:.NET技术的基础特性、在现代开发中的应用、以及它如何助力未来的软件开发。
.NET技术是软件开发领域的核心支柱,以其强大功能、灵活性及安全性广受认可。本文分三部分解析:基础特性如多语言支持、统一运行时环境;现代应用如企业级与Web开发、移动应用、云服务及游戏开发;以及未来趋势如性能优化、容器化、AI集成等,展望.NET在不断变化的技术环境中持续发展与创新。
32 4
|
15天前
|
人工智能 物联网 开发者
.NET技术在现代软件开发中的应用愈发广泛和深入
.NET技术是软件开发的关键支柱,本文分为三部分探讨其创新应用:最新进展如.NET 5/6统一平台、性能提升、跨平台支持增强、云集成优化及开源社区贡献;应用场景涵盖微服务架构、物联网、AI/机器学习、游戏及移动应用开发;未来发展潜力在于持续性能优化、云原生支持、新兴技术集成、生态扩张及教育培训加强。.NET正以其强大适应性和创新潜力引领软件开发的新方向。
26 3
|
15天前
|
人工智能 开发框架 .NET
如何掌握.NET技术,引领开发前沿:.NET技术的核心能力、在现代开发中的应用实践、以及如何通过.NET技术实现持续创新。
.NET技术已成为软件开发不可或缺的部分,本文分三部分探讨:核心能力如多语言支持、统一运行时环境、丰富的类库及跨平台能力;现代开发实践包括企业级应用、Web与移动开发、云服务及游戏开发;并通过性能优化、容器化、AI集成等方面实现持续创新,使开发者站在技术前沿。
31 3
|
3天前
|
大数据 开发工具 开发者
从零到英雄:.NET核心技术带你踏上编程之旅,构建首个应用,开启你的数字世界探险!
【8月更文挑战第28天】本文带领读者从零开始,使用强大的.NET平台搭建首个控制台应用。无论你是新手还是希望扩展技能的开发者,都能通过本文逐步掌握.NET的核心技术。从环境搭建到创建项目,再到编写和运行代码,详细步骤助你轻松上手。通过计算两数之和的小项目,你不仅能快速入门,还能为未来开发更复杂的应用奠定基础。希望本文为你的.NET学习之旅开启新篇章!
12 1
|
15天前
|
敏捷开发 设计模式 开发者
【揭秘终极利器】AgileEAS.NET:服务定位器模式的魔法,如何让企业级软件开发瞬间提速?揭秘背后的技术奥秘与实战指南!
【8月更文挑战第16天】AgileEAS.NET是基于DotNet的企业级敏捷开发平台,其服务定位器模式助力构建高度解耦系统。通过全局服务目录动态查找服务,避免硬编码依赖。在AgileEAS.NET中,服务定位器以静态类形式封装服务注册与检索功能。示例展示了如何注册与获取服务实例,如在`UserController`中通过服务定位器使用`IUserService`。此模式整合到框架生命周期管理,便于各处获取服务实例,提升开发效率。然而,应适度使用并考虑依赖注入容器以增强代码可维护性和可测试性。
39 4
|
15天前
|
人工智能 前端开发 开发工具
.NET技术的开发潜力是巨大的,其核心优势和广泛应用不断推动着软件开发的进步
.NET技术自推出后已成为软件开发的关键力量。本文分三部分探讨其开发潜力:核心优势如统一平台、强大工具与跨平台能力;现代应用中的创新,包括企业级与Web应用、移动开发、云服务及游戏制作;以及面对的挑战与未来机遇,如性能优化、容器化支持、AI集成等。.NET的持续发展正塑造着软件行业的未来。
47 1
|
4月前
|
C# 开发者 Windows
基于Material Design风格开源、易用、强大的WPF UI控件库
基于Material Design风格开源、易用、强大的WPF UI控件库
293 0
|
4月前
|
C#
浅谈WPF之装饰器实现控件锚点
使用过visio的都知道,在绘制流程图时,当选择或鼠标移动到控件时,都会在控件的四周出现锚点,以便于修改大小,移动位置,或连接线等,那此功能是如何实现的呢?在WPF开发中,想要在控件四周实现锚点,可以通过装饰器来实现,今天通过一个简单的小例子,简述如何在WPF开发中,应用装饰器,仅供学习分享使用,如有不足之处,还请指正。
110 1
|
30天前
|
开发框架 缓存 前端开发
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(11) -- 下拉列表的数据绑定以及自定义系统字典列表控件
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(11) -- 下拉列表的数据绑定以及自定义系统字典列表控件
下一篇
云函数