天马行空  
I ---- Inject 投入 L ---- Loyal 忠诚 O ---- Observant 用心 V ---- Valiant 勇敢 E ---- Enjoyment 喜悦 Y ---- Yes 愿意 O ---- Obligation 责任

只所以要在View(Xaml)背后写一些代码(C#), 无非是想传递一些数据以及传递数据时的数据的处理或在用户与界面控件进行交互时执行一些操作, 最简单的例子是在MVC中当界面发生交互时View去调用Controler中的某个方法, 以便将该操作的相应"指示"传递到"后台"去. 在以前的技术中, 这样的"衔接性"的代码是必须的. 而在WPF中, 则可以通过另外的技术来进行层与层之间的"衔接", 这就是"Binding" 和"Command", 以及稍后我们会提到的"AttachBehavior". 通过Binding, 我们可以实现数据的传递; 通过Command, 我们可以实现操作的调用.(AttachBehavior的作用稍后再谈). Binding和Command是可以写在XAML中的, 这样看来XAML后面对于的CS文件可以被完全抛弃或不予理会了. 这样的XAML文件正是美工所需要的. 而这些对于Binding以及Command的定义描述以及其他相关信息的代码应该放在那里呢, 当然不是View, 更不是Model, 是"ViewModel". ViewModel是为这个View所量身定制的, 它包含了Binding是所需的相关信息,比如Converter以及为View的Binding提供DataContext, 它包含了Command的定义以便View层可以直接使用, 另外,它还是一个变种的Controler, 它得负责业务流程的调度.
于是, 便有了
这副图, 然后, 正如"时势造英雄"所言, MVVM就诞生了.

 

MVVM - Demo:

http://www.codeproject.com/Articles/435478/MVVM-Demo

 

这篇译文挺好:WPF/MVVM 快速开始指南(译)

http://www.cnblogs.com/xiaobaihome/archive/2011/11/28/2266536.html

 

开源框架

Caliburn Micro:http://caliburnmicro.codeplex.com/

MVVM Light Toolkit:http://mvvmlight.codeplex.com/

Simple MVVM Toolkit: http://simplemvvmtoolkit.codeplex.com/ 这里解释了内部的一些原理: http://simplemvvmtoolkit.codeplex.com/wikipage?title=Programming%20Reference 不少sample:http://simplemvvmtoolkit.codeplex.com/wikipage?title=Samples

 

在 Windows 8 中使用 MVVM 模式http://msdn.microsoft.com/zh-cn/magazine/jj651572.aspx

利用 Windows 8 功能和 MVVM: http://msdn.microsoft.com/zh-cn/magazine/dn296512.aspx

Writing a Testable Presentation Layer with MVVM: http://msdn.microsoft.com/en-us/magazine/dn463790.aspx

posted on 2013-10-15 14:58  浅蓝  阅读(388)  评论(0编辑  收藏  举报