豆瓣电台WP7客户端 MVVM重构记录之-总结
经过几个晚上时间的奋斗,dbfm7的MVVM改造之旅终于告一段落。从对MVVM的无知到现在对它的半只半解,这个过程还是学到了很多。
MVVM的目的在于使开发分离关注点,写后台逻辑的就写后台,设计UI的就设计UI。不过要达成这一点并不那么容易,比如导航,比如动画(StoryBoard),这些在ViewModel中都不是那么容易控制的,或者说一旦在VM中控制,那么就破坏了MVVM的初衷。上面这两个问题我都是使用MVVM Light的Message机制来处理的,虽然看起来解耦了,但是还是不够彻底。特别是ViewModel通知View去操作StoryBoard这种情况,虽然从代码层面来看分离了,但是没有分离关注点,ViewModel 还是在关注View。我还没想到更好的解决办法,我是想,要是能做到某个绑定属性(Image的Uri)发生变化的时候,View自动触发一个动画(右边飞入),这样就完美了。也许可行,哪位大侠指点下。
现在的ViewModel比当初的CodeBehind,没有了业务夹杂UI的操作,真是清爽的了很多。当然CodeBehind并不是一行代码都没有。CodeBehind本来就是View的一部分,有些在XAML里面不能定义的复制UI操作,完全可以放在这里。另外MVVM Light真的很好用,使你的MVVM开发简单,优雅了不少!
最新代码请到codeplex下载:http://dbfm7.codeplex.com/SourceControl/list/changesets
刚刚改完,还没好好测试,bug在所难免,发现请告诉我。
以下是改造过程的记录,希望对初学MVVM的同学帮助。
豆瓣电台WP7客户端 MVVM重构记录之使用MVVM Light实现数据绑定
豆瓣电台WP7客户端 MVVM重构记录之使用MVVM Light实现Event绑定
豆瓣电台WP7客户端 MVVM重构记录之使用MVVM Light的Message实现导航
豆瓣电台WP7客户端 MVVM重构记录之使用AppBarUtils使ApplicationBarIconButton支持绑定(包括IconUri)
QQ群:1022985150 VX:kklldog 一起探讨学习.NET技术
作者:Agile.Zhou(kklldog)
出处:http://www.cnblogs.com/kklldog/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。