早在2005年,John Gossman写了一篇关于Model-View-ViewModel模式的博文,这种模式被他所在的微软的项目组用来创建Expression Blend(即'Sparkle')。它跟Martin Fowler的Presentation Model非常相似,唯一不同的是,它填平了presentation model和使用了WPF的丰富的数据绑定的view之间的沟壑。在Dan Crevier发表了神作DataModel-View-ViewModel series博文系列之后,(D)MVVM模式开始变得流行起来。

(Data)Model-View-ViewModel模式跟经典的Model-View-Presenter模式很相似,除了你需要一个为View量身定制的model,这个model就是ViewModel。ViewModel包含所有由UI特定的接口和属性,它们是轻松构建UI的必要元素。View绑定到ViewModel,然后执行一些命令在向它请求一个动作。而反过来,ViewModel跟Model通讯,告诉它更新来响应UI。

这使得为应用构建UI非常的容易。往一个应用程序上贴一个界面越容易,外观设计师就越容易使用Blend来创建一个漂亮的界面。同时,当UI和功能越来越松耦合的时候,功能的可测试性就越来越强。

John Gossman's Introduction to Model/View/ViewModel pattern for building WPF apps John Gossman 2005年写的一篇关于Model-View-ViewModel模式的博文
StackOverflow 讨论 Should I use the Model-View-ViewModel (MVVM) pattern in Silverlight projects? Jonas Follesø's YouCard exampleNikhil Kothari's ViewModel Pattern in Silverlight and a funky extension to MVVM using the DLRMartin Fowler's Presentation Model
WPF 应用程序使用程序的模型视图 ViewModel 设计模式

为什么 WPF 开发人员喜欢 MVVM

一旦开发人员成为熟悉 WPF 和 MVVM,很难区分这两者。 MVVM 是 WPF 开发人员的语言 franca,因为它是适合在 WPF 平台 WPF 为了方便地构建应用程序使用 MVVM 模式 (在其他)。 实际上,Microsoft 使用 MVVM 内部开发 WPF 应用程序,Microsoft Expression Blend,如,核心 WPF 平台时正在建设中。 WPF,如外观不控制模型和数据模板的许多方面使用显示的状态和行为的 MVVM 提升强的分离。

Dan Crevier's DataModel-View-ViewModel pattern series 8篇介绍WPF的 sample DataModel 和 ViewModel
David Wynn's Silverlight and the View-ViewModel Pattern 使用 NInject, Silverlight Extensions (Command) 和Unit Testing的例子
Josh Smith讨论MVVM eliminates 99% of the need for ValueConverters

The only place I can see a use for value converters in an MVVM architecture is cross-element bindings. If I'm binding the Visibility of a panel to the IsChecked of a CheckBox, then I will need to use the BooleanToVisibilityConverter.

Mark Heath's Model View View-Model (MVVM) in Silverlight 在Silverlight 2.0演示MVVM 的例子

相关文章:
Hands-On Model-View-ViewModel (MVVM) for Silverlight and WPF :
 http://weblogs.asp.net/craigshoemaker/archive/2009/02/26/hands-on-model-view-viewmodel-mvvm-for-silverlight-and-wpf.aspx
MVVM pattern in Silverlight using SLEextensions
http://blog.developers.ba/post/2009/02/15/MVVM-pattern-in-Silverlight-using-SLEextensions.aspx
[WPF] Another sample of WPF application using the pattern MVVM
http://weblogs.asp.net/thomaslebrun/archive/2009/03/17/wpf-another-sample-of-wpf-application-using-the-pattern-mvvm.aspx

浅谈MVP与Model-View-ViewModel(MVVM)设计模式

http://mvvmref.codeplex.com/

转载于:https://www.cnblogs.com/shanyou/archive/2009/03/01/1400742.html

Silverlight + Model-View-ViewModel (MVVM)相关推荐

  1. Silverlight中如何使用MVVM架构

    MVVM架构: Model + View + ViewModel Model层是数据类的提供者:View是表示层:ViewModel是逻辑层. 该实例非常简单,只是把数据体加载到页面DataGrid上 ...

  2. Silverlight入门系列]使用MVVM模式

    [Silverlight入门系列]使用MVVM模式(9): 想在ViewModel中控制Storyboard动画? (2011-09-07 16:12) [Silverlight入门系列]使用MVVM ...

  3. Qt Model/View 学习笔记 (四)

     创建新的Models 介绍 model/view组件之间功能的分离,允许创建model利用现成的views.这也可以使用标准的功能 图形用户接口组件像QListView,QTableView和Q ...

  4. Model/View 教程

     说明:这篇博客基本都是翻译于Qt官方的Model/View Tutorial教程,无法理解的地方建议转到原文,同时,由于译者水平有限,如有差错欢迎指出. 原文:http://qt-project ...

  5. Model和ViewModel

    Model和ViewModel 小编最近做了一个底层使用EF映射的项目,里面用到了MVC的Model和自定义的ViewModel. Model 这里MVC中的Model是根据数据库生成的. 使用的时候 ...

  6. Qt学习笔记-----Model/View架构之自定义Model

    Model/View Framework中提供了模型model的抽象基类QAbstractItemModel, 如果需要自定义模型就需要继承这个类并且实现一些必要的函数. 此外,Qt中又提供了QAbs ...

  7. Qt学习笔记-----Model/View架构

    为了实现数据的存储和表现分离,Qt提供了Model/View架构,包括三个部分,分别是模型(Model),视图(View),委托(delegate). Model用于访问底层数据,也就是说为其他组件访 ...

  8. QT Basic 014 Model/View programming (模型、视图编程)

    前言:本文不是纯文本翻译,加入了对概念的理解,纯文本翻译,请看文后的一个链接. Model/View Programming Introduction to Model/View Programmin ...

  9. (一) Qt Model/View 的简单说明

    目录: (一) Qt Model/View 的简单说明 .预定义模型 (二)使用预定义模型 QstringListModel例子 (三)使用预定义模型QDirModel的例子 (四)Qt实现自定义模型 ...

  10. 用C#实现MVC(Model View Control)模式介绍

    用C#实现MVC(Model View Control)模式介绍 作者:Matthew Cochran December 12, 2005 原文地址:http://www.c-sharpcorner. ...

最新文章

  1. 石子合并[DP-N3]
  2. 国家自然科学基金委公布生命科学部四类科学问题典型案例
  3. JAVA《第一次作业》
  4. 从实际案例聊聊Java应用的GC优化--转
  5. R语言:cbind()和rbind()
  6. SSH运维总结-【liunx学习】
  7. KubeVela 1.0 :开启可编程式应用平台的未来
  8. beaglebone black 联网
  9. C语言中输入输出格式控制
  10. oracle 安装display,Linux安装Oracle 11时报错DISPLAY解决方案
  11. python从小到大的顺序输出_「小白专栏」Python中使用for循环,为什么输出结果不是按顺序?...
  12. 苹果cms v8模板 红色动漫影视模板
  13. python 僵尸进程孤儿进程
  14. springMVC 项目在jboss7中配置应用自己的log4j
  15. 基于yolo的口罩识别(开源代码和数据集)
  16. java list indexof_Java LinkedList indexOf()方法
  17. 软路由防火墙IPcop的安装,配置
  18. Python爬取必应图片2
  19. mysql-8.0.18免安装版安装过程
  20. 【物理学】扫描隧道显微镜(Scanning Tunneling Microscope)

热门文章

  1. animate用法 js原生_用 原生Javascript 创建带动画的固顶导航菜单
  2. wpf每隔一小时_包河区徐河排涝站24小时不间断运作 11座区管泵站全面应战保安澜...
  3. bat 删除文件_利用电脑文本文档建立一个简单方便的删除文件的小程序
  4. python tkinter 布局_(4)python tkinter-布局
  5. 2020双十一实时大屏_双十一实时“战报”来了,你贡献了多少?
  6. oracle rodm包,由重启引起的Oracle RAC节点宕机分析及追根溯源
  7. php乱码解决方案,php中文乱码问题的4种解决方案
  8. 云时代看CRM如何引领企业成功?
  9. 谷歌深度学习公开课任务 5: Word2VecCBOW
  10. ioS html的转义