这俩年多来笔者一直在从事关于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是一个