- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
/starsoul/archive/2011/07/04/2097002.html
原创翻译:基于MVVM设计模式的WPF应用程序
Posted on 2011-07-04 00:11 StarSoul 阅读(43) 评论(0) 编辑 收藏
第一次翻译英文技术文档,翻译不正确的地方请多多指正。原文及文中演示程序的地址:/en-us/magazine/dd419663.aspx
开发一个专业的应用程序软件的用户界面不容易。它可能涉及到数据融合,交互设计,可视化设计,连接,多线程,安全,国际化,验证,单元测试和可触摸技术。考虑到用户界面暴露了底层系统,必须满足其用户的不可预知的要求,它可以是许多应用中最不稳定的区域。有流行的设计模式,可以帮助驯服这个难使用的野兽,但是正确的区分和选择多个关注可能是困难的。模式越复杂,越有可能捷径在以后被使用,破坏了以前正确方式做事情的努力。
这不总是设计模式的问题。有时我们用复杂的设计模式,需要写很多的代码因为使用的UI平台不能帮助它用一个简单的模式。幸运地是,WPF提供了这一帮助。
由于软件界采用WPF的比率不断增长,WPF团体一直在开发它自己的模式生态系统和实践。在这篇文章中,我将查阅那些用WPF设计和实现的最好实践中的一些。通过利用一些结合MVVM设计模式的WPF的核心特征,我将介绍一个实例程序,演示以”正确方式”构建一个WPF程序是多么简单。
在 这篇文章的结尾, 我们将清楚数据模板,命令,数据绑定,资源系统和MVVM模式如何结合在一起,创建一个简单地,可测试的,强大的框架,在此框架上任何WPF程序都能存活。伴随着这篇文章的演示程序能作为一个真正的WPF程序的模板,用MVVM作为它的核心架构。在演示解决方案的单元测试显示了如何轻松地测试应用程序的用户界面功能,该功能在一系列的ViewModel类中存在。在进入细节之前,让我们首先回顾一下为什么要用MVVM这样的模式。
有序vs混乱
在一个简单的”Hello,World!”程序里使用设计模式是没有必要的,只会适得其反。任何一个合格的开发人员能一目了然的理解几行代码。然而,当程序的功能增加时,代码行和移动部件的数量相应地也会增加。最终,系统的复杂性,以及它包含的重复出现的问题,促使开发人员去重构他们的代码,以便它们更容易理解,讨论,扩展和解决问题。我们通过在源代码中对于某些实体应用众所周知的名称来减少认知上的混乱。我们通过考虑它在系统中的功能角色,确定一段代码中的名称。
开发者经常根据一个设计模式刻意地构建他们的代码,而不是让模式自然地出现。这两种方法都没有错,但是在这篇文章里,我考察了在一个WPF应用程序中明确地使用MVVM作为架构的好处。某些类的名称包含了MVVM模式中熟悉的术语,例如如果这个类是一个view的抽象,类名称以”ViewModel”结尾。这种方法有助于避免前面提到的认知混乱。你能很愉快地存在于一个混沌的控制,这是在最专业的软件开发工程中事务最自然的状态。
Model-View-ViewModel的革命
从人们开始创建软件用户界面开始,已经有流行的设计模式帮助使它更容易。例如,MVP模式已经在各种UI编程平台享有声望。MVP是Model-View-Controller模式的变种,这十多年来一直使用很广泛。万一你以前从来没有用过MVP模式,这里有一个简单的解释。你在屏幕上看到的是View,它所显示的数据是Model,而Presenter 把这两者连接在一起。View依赖Presenter去组装数据,和用户输入进行交互,提供输入验证(可能通过委托的模型),以及一些其他的任务。如果你想要学习更多的关于MVP的东西,我建议你阅读一下Jean-Paul Boodhoos2006年8月份的设计模式专栏。
早在2004年,Martin Fowler发表了一篇命名为Presentation Model(PM)的模式的文章。PM模式相似于MVP,它分离出来view的行为和状态。PM模式的有趣的部分在于一个view的抽象被创建,叫做Presentation Model。View仅仅变成一个Presentation Model的一个表现。在Fowler的解释里,他显示了Presentation Model频繁地更新它的View,以便这两者之间保持一致。同步的逻辑作为代码存在于Presnetation Model类里。在2005年,John Gossman,当前微软WPF和Silverlight的架构师之一,在他的blog里发表了Model-View-ViewModel(MVVM)模式。MVVM与Fowler的Presentation Model相同,这两个模式都有一个View的抽象,其中包含了View的状态和行为。Fowler引入Presenta
您可能关注的文档
- 00基于攻防状态图模型的网络风险评估方法 - 副本.doc
- 08 基于Z-Stack的传感器中断添加实验.doc
- 本科-二-7-基于面部识别的手机签到系统.doc
- 陈凌_基于Zigbee的混凝土施工信息无线监测系统.doc
- 单片机原理与应用-基于汇编、C51及混合编程1-11章习题解答.doc
- 基于3G网络的视频传输系统(应急指挥车).doc
- 基于51单片机的电子万年历的设计资料.doc
- 基于485总线的评分系统说明.doc
- 基于1602液晶显示的数字时钟(课程论文).doc
- 基于GPS的四旋翼导航系统申请书.doc
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
文档评论(0)