WPF 杂谈——开篇简言。
这俩年多来笔者一直在从事关于WPF的开发。虽然不能说是专家级别的。但是对于WPF的应用还是有一定的了解。论他的灵活性决对不在WinForm之下。WPF的出现更是引发一段热议。他的何去何从更是让很多人感到迷茫。因为那个时候可以说只有Winow 7才能跟WPF完美的接合。可惜他出不逢时,XP占了大部分的市场。所以WPF的出生动静很大,可惜后力不足,渐渐的淡淡化他的光芒。于至于网络上更是有对WPF的死亡产生了很大的争议。但是这并没有让他沉默下去,这几年来window 8和window 10的推广更是让他起来的迹象。对于未来WPF会发展到如何的程度。笔者也不敢猜测。更多的只是希望他能走的更远一点。
如果WPF没有WinForm所具有的优点,那么他也不可能活到现在,更不用说还有可能崛起了。所以笔者想开一个系列来谈谈这俩年的WPF之旅。希望能给那些正在学习WPF或是将要学习的同学们带来一些帮助。出于笔者本身的学习方式有一点不正统的原因,所以这一系列的文章只能被定义为杂谈。
曾经有一个刚刚从事WPF的同事问笔者静态资源和动态资源有什么不同。笔者傻了几秒反问到什么是静态资源,什么是动态资源。这次谈话的结果可想而知——很尴尬。为什么笔者会不知道静态资源和动态资源呢?事实上笔者没有看过相关的WPF书籍。那么笔者又是如何学习WPF呢?一句话——看开源项目的源码进行学习。本来笔者想把这一系列命名为“WPF 开源项目”。后来想想有一点自大了,同时笔者也不知道这一系列要以什么样子知识路线来讲解。所以命名"WPF 杂谈"显示平淡一点,又可以让笔者自由的吹牛。
以前用于开发商业软件的技术有Winform(C#),MFC(C++), Swing(JAVA),Delphi。现在.NET又都出了一个WPF。即然有Winform了,为什么.NET又要在来一个WPF。笔者曾经有想过这样子的问题。可惜笔者就一个懒人,后面也没有细细的去查找原因。WPF的灵动是笔者深深喜欢的优点之一。和WinForm比起来笔者只知道他们的图形引擎不一样子。这还是从一些书籍里面看到的。WinForm是基于User32/GDI/GDI+,而WPF是基于DirectX引擎的。不用笔者多说就明白了——DirectX常常会在开发游戏的时候听到。所以WPF可以做到很多不错的动画效果。这也是Winform所不能做到。哦!不。应该说是很难做的。但是笔者到现在还是没有多大的应用动画效果。主要是笔者从事餐饮行业。餐厅里面的电脑配置不敢拘同。516内存的XP系统是一种常态。如果你用上动画的话,你注定要为动画的BUG和运行性能买单。这说明了一问题WPF需要有一定的配置环境。从.NET Framework来讲,还是.NET 4.0来的开好一点。因为这样子XP,Window 7,Window 8还是Window 10都可以做到共用。
笔者之所以可以很快的上手WPF。这里要深深的感谢那些把自己的项目开源出来的人。这一点国外的开发人员还有做的很不错。WPF有很多知识点在国内是无法百度到的,所以想要学好WPF还是要去搞一个VPN或是自己想办法跳墙过去。
SharpDevelop
SharpDevelop是一款用C#开发的开发工具。这是笔者第一个接触的WPF项目。对于源码笔者也只是看过部分。当年笔者是从事JAVA开发的。对于JAVA的OSGI思想很感兴趣。也曾试着寻找有没有.NET大神写一些类似的框架。只是可惜太少了,有的也是半成品不是真正的OSGI。不过.NET有一个自己的想法——插件思想。这也是笔者查看他源码的原因。他虽然没有OSGI的思想,可是笔者对他的插件实现还是有一定的兴趣的。所以有兴趣的读者们可以试着去看一下。好吧。有一点远了。SharpDevelop他可以说是WPF和Winform的组合体。他有一部分是WPF实现。而有一些却是用Winform。当然读者们会想着这样子也行。不怕出问题吗?问题是不会太大。只是笔者还是建议不要这样子用。鬼知道他们俩个将来会什么样子。当然如果只是一次项目的话,为了方便到是可以这样子做。反正项目做完就是拜拜了。不用维护。SharpDevelop有一点大,想要吃通他的话,需要一定的时间和精力。不过他真的是一款学习PC端开发的最佳开源项目之一。
SharpDevelop的下载地址:https://github.com/2594636985/SharpDevelop。
Xceed.Wpf.Toolkit
Xceed.Wpf.Toolkit是一个框架。他自定义一些常用的组件。比如加载提示框。复杂的列表。 Xceed.Wpf.Toolkit只有表现层用到的知识,没有什么业务逻辑,所以学习起来还是比较易容的。不像上面SharpDevelop那样子。还要结合WinForm。他的源码笔者大部分都看过了。那么我们要学习他的什么呢?当然学习他如何实现用户自定义化组件的。现在他又更新了新的版本。不过很多源码没有什么变化。命名习惯还是那样子让笔者很不喜欢。但是不得不说他是进入WPF用户自定义组件最佳导师。初级的WPF学习者可以看这个开源项目。
Xceed.Wpf.Toolkit下载地址:http://wpftoolkit.codeplex.com/
Modern UI for WPF
笔者由了上面俩个项目的经历之后,又遇到了WPF生命中的最佳战友——Modern UI for WPF开源项目(又称mui)。正如上面所讲的笔者一直在查看插件思想。而Modern UI for WPF不管是在对WPF的实现上,还是在编辑思想上绝对是良作。如何你学习了Modern UI for WPF又研究了他的源码。那么你可以很轻易的改动他的框架来实现你做需要的架构。可以这样子讲Xceed.Wpf.Toolkit是面向WPF的深度。而Modern UI for WPF可以说是广度。你学习组件知识可以选Xceed.Wpf.Toolkit。如果你想学习如何开发WPF的话Modern UI for WPF不二人选。你可以从源码中看到如何切换界面。如何实现界面之间的交互。并且你还可以看到如何排版资源。
Modern UI for WPF下载地址:https://github.com/firstfloorsoftware/mui
MaterialDesignInXamlToolkit
当我遇到MaterialDesignInXamlToolkit开源项目的时候,我才知道原来WPF还可以做到这么好的效果。如果MaterialDesignInXamlToolkit是一个好动的年青人的话,那么Modern UI for WPF无疑就是一个经历过岁月的老人。MaterialDesignInXamlToolkit在动画和美工上做了很大的功夫。可惜笔者却无力消受。该死的餐饮行业。每一个按扭的动画效果足以让你美美的睡上一觉。美中不足的是作者用的是4.5.2以上的.NET Framework语法进行编写。所以你可能要手动的修改回来。变成4.5或是4.0。至少笔者是这样子做的。同后面的代码习惯让笔者叹了一口气。这也没有规则了吧。
MaterialDesignInXamlToolkit下载地址:https://github.com/ButchersBoy/MaterialDesignInXamlToolkit
MahApps.Metro
和MaterialDesignInXamlToolkit一样子,可惜在笔者看来他没有MaterialDesignInXamlToolkit来的效果,又没有Modern UI for WPF在大体上表现出众。可以说MahApps.Metro对学习WPF来讲比较平稳。没有过多的亮点。可能笔者有了上面三个开源项目的经历之后。在去看MahApps.Metro显示有一点知识疲劳。所以笔者一般只是把他当作小情人来看待。如果上面三个开源项目都没有找到笔者需要的时候,才会去找MahApps.Metro。
MahApps.Metro下载地址:https://github.com/MahApps/MahApps.Metro
笔者看了很WPF的开源应用项目。最后留下来也就是这几个。在后面的开发过程中,笔者也是靠这里个开源项目决解了很多开发上的问题。在开发过程很明显的感受与Winform有着根本上的不同。最大的体现是WPF的引入了MVVM模式开发。为此还出现了很多开源的MVVM框架。其中最出名有Prism、MvvmLight等。很不幸的是笔者都没有用过。不是笔者不想去用。而是觉得用了,在一定程序上会减少了WPF的灵活性。如果要推存的话,笔者会选择Caliburn.Micro开源项目。对于Caliburn.Micro的应用到是有一个开源的小项目。读者们可以去了解一下——gemini。
笔者的学习方式也很简单就是看源码。可以说笔者的WPF之旅就是吃源码之旅。不知道大家跟笔者是不是一样子的。后面的文章没有出现专业的术语也请大家不要过份的在意。笔者真的没有看过多少书。几乎全实战。
WPF 杂谈——开篇简言。的更多相关文章
- WPF 杂谈——开篇简言
这俩年多来笔者一直在从事关于WPF的开发.虽然不能说是专家级别的.但是对于WPF的应用还是有一定的了解.论他的灵活性决对不在WinForm之下.WPF的出现更是引发一段热议.他的何去何从更是让很多人感 ...
- WPF 杂谈——入门介绍
对于WPF的技术笔者是又爱又恨.现在WPF的市场并不是很锦气.如果以WPF来吃饭的话,只怕会饿死在街头.同时现在向面WEB开发更是如火冲天.所以如果是新生的话,最好不要以WPF为主.做为选择性来学习一 ...
- WPF 杂谈——资源文件
编写一个应用难免要用到WPF本身的控件.不管是WinForm还是网页都会有自己的控件.只是在写法和用法上有所不同而以.而控件命名却离不开那几个单词.所以不用担心判断不出来哪个是按扭,哪个是文本框.举个 ...
- WPF 杂谈——自定义控件
如果只是使用现有的WPF控件的话,是很难满足当前社会多复杂的业务.所以用户自己订制一系列控件也是一种不可避免的情势.WPF在控制方面分为俩种:用户控件和自定义控件.相信看过前面章节的就明白他们俩者之间 ...
- WPF 杂谈——Binding表达式
不管是定义控件还是用户控件都会用到一个功能--绑定(Binding).书面的叫法:元素绑定.意思就是让绑定的元素实现数据同步.在笔者看来WPF引入这一个功能实在是太完美了.编程更加的具体化.特别是跟M ...
- WPF 杂谈——Trigger触发器
笔者在使用的WPF过程中,见过的触发器有三种:Trigger.DataTrigger.EventTrigger.其中最为常用的要属Trigger.至于触发器的作用就是当某个属性的值发生变化,应该去做某 ...
- Zara带你快速入门WPF(1)---开篇
一.引言 我们时常可以看到园友们在讨论WPF与WinForm!它们两个的激情对决,看到大家热情洋溢的评论,搞技术的我也是深受感动. 二.走势 但抱歉的是,我无法预测未来WPF会怎么样.乔布斯说过这么一 ...
- (00)Java编程思想开篇立言。
从今天开始,在相当长的时间中我在看Java编程思想.也把这个博客作为开始.这就是一个读书的笔记.
- 简言MVC
什么是MVC? MVC是一种代码的组织结构,在一个工程项目中,将代码的数据处理,逻辑单元和交互部分分离开来达到一种低耦合的效果,便于工程的修改.MVC中M代表Model,V代表View,C代表Cont ...
随机推荐
- 自行搭建私有云ownCloud,启用SSL,其他配置
ownCloud简介 ownCloud(官网)是一款开源的私有云框架,可以通过它实现个人网盘的功能,如果拥有一个性能不错的VPS,那么就可以摆脱奇慢无比的百度云等网盘啦!我花了大约一天的时间总算搭好了 ...
- Form表单中method="post/get'的区别
Form提供了两种数据传输的方式--get和post.虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响.虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一 ...
- 脚本之家 前端jQuery js 学习 网站
http://www.jb51.net/books/ http:// www.3wschool.com/
- Kindle电子阅读器收不到个人文档推送解决方案
最近我的 kindle 固件版本更新到 5.8.7.0.1 ,发现增加了生字注音功能,瞬间变成小学生阅读神器有木有,不过,这个功能可以隐藏.显示,看着碍眼隐藏即可,还可以减少和增加生字注音.感觉对于经 ...
- WebSite---前台系统图片验证码心得
背景: 因为移动端APP和Msite手机注册发送短信验证码没有添加图片验证码功能.公司的短信接口被恶意刷取.所以我们就觉得在移动端添加一个图片验证码功能.分享一下大体实现方式思路.PS demo是自己 ...
- jQuery测验题
1.在div元素中,包含了一个<span>元素,通过has选择器获取<div>元素中的<span>元素的语法是? 提示使用has() $("div:has ...
- inline元素的margin与padding
替换元素与非替换元素 替换元素(replaced element):所谓替换元素就是浏览器根据元素的标签和属性,来决定元素具体显示什么内容.比如说:img标签的src属性的值用来读取图片信息并且显示出 ...
- KoaHub平台基于Node.js开发的Koa的skip插件代码详情
koahub-skip koahub skip middleware koahub skip Conditionally skip a middleware when a condition is m ...
- 1059: [ZJOI2007]矩阵游戏
1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2154 Solved: 1053[Submit][Stat ...
- javaScript事件(六)事件类型之滚轮事件
滚轮事件其实就是一个mousewheel事件,这个事件跟踪鼠标滚轮,类似Mac的触屏版. 一.客户区坐标位置 鼠标事件都是在浏览器视口的特定位置上发生的.这个位置信息保存在事件对象的clientX和c ...