WPF学习(1)-概述

       原来写桌面程序,都是使用WinForm,一方面,确实写出来不漂亮,自定义控件也不方便,于是就想着换一种,买的C#从入门到精通,桌面编程的内容也换成了WPF,于是就想着来系统学习一下吧。

       写下博客,记录下来自己的学习体验,也希望可以有更多志同道合的人一起来学习。

        我们公司是做定位系统的,于是自然就用到动画,在winform上,动画实在太费劲,原来就是用定时器,几秒钟刷新一下定位对象的位置,直接用GDI+画图,这样效果很差,而且会造成内存溢出,但是wpf就可以很好的实现,这个是我最迫切的功能需求,也是搞WPF最强的动力所在。

        DirectX的加成,当现代系统,越来越讲究美观,特效的时候,如果继续使用老旧的显示技术,那么我们做出来的系统肯定是没有太多的市场,所以WPF另外一个好处是可以构建复杂的美观的酷炫的系统界面,而且不会占用太多的资源,特别是我们有大量的图形渲染工作要做的时候,而这一些都是得益于DirectX。

       分辨率无关,这个是解决了我的另外一个痛点,原来,比如我配置地图上的基站时,不同的屏幕,基站在地图的位置会变得不一样,当然可以用事件监听,但是每次尺寸变化之后,都是重新绘图,特别慢,我配置还不错的电脑,都能看到是一个个画上去的,体验不是很好。

      数据绑定,这个也很有用,比如原来我用socket去接受硬件的数据,每次我都要去和我的静态字典比较下,然后更新界面上,显示具体的数据,用数据绑定,就不需要太关注前台界面的展示,只要做数据绑定,维护好绑定源就行了,真的非常好用,最关键的是,可以一下子更新展示,不会像原来那样,用接受数据监听事件处理,真的是快了很多,代码也很少。

       路由事件,这个我原来都没有概念,但是我有一个需求,原来在地图上用GDI+画的基站,我想要实现鼠标双击,更改基站的信息,但是我画的时候,是先放一个panel,在放一个imagebox,根据基站类型,显示不同的图片,如果我不管双击的是图片,还是picturebox,还是panel都可以触发修改基站信息的事件,那就非常好用了,这个就是路由事件啦。

       命令,当有多个地方的操作都是同一个时,我们可以使用命令,这个类似于设计模式里面的命令模式,现在已经完美继承了,非常好用。

       用户模板,这是最让我喜欢的一个功能,比如写个二级菜单,可以用tabcontrol,然后用用户模板去修改他的外观,就可以实现很多网站所用户的漂亮的菜单了。

       依赖属性,属性系统的一次大的改革,有了依赖属性,比如点击一个checkbox,某些控件禁用,原来想要实现这个功能,可以采用事件的方式,但是这样前后台没有完全分开,或者使用数据绑定,但是非常的不灵活,有了依赖属性,就可以非常方便地在前台完成了。

       xaml,原来写界面,winform拖控件,后台代码不断的去更新,如果想要实现好看点的图形界面,那么就非常费劲了,比如一个简单的datagridview,想要不同列宽度不一样,这个就非常麻烦,那么在xaml里面,就是一个属性的事情,而且自由嵌套不同元素,真的是强大了不止一点点。

      样式,类似于CSS,为了能够构建一套风格统一的图形界面,你可能需要写很多重复的标记属性,现在只要定义样式就可以了,换句话说,可以非常方便的更换你的皮肤和样式啦。

      web过度,其实,很多人可能和我一样,都是自学写代码,就是稀里糊涂的学了winform开发,网页写的不多,然后由于没有体系的接受教育,很多概念要转非常困难,我觉得wpf就是一个桥梁,可以把我们很轻松地过度到web开发上面,布局,前后台分开,几乎都有对应的,包括JS,如果你原来一直是从事.NET的桌面编程,想要很快的转过去,当然我说的不是能写项目,是真正的理解,可能要费点功夫,但是通过wpf,可以轻松过度,当然这是我自己的一点点体验。

     这只是我自己的一点点体验,自己写代码也只有三年的时间,而且一大半时间,还是在做销售,本身自己的实力也不强,仅以此勉励自己,不断学习。

 

你可能感兴趣的:(WPF)