我已经阅读了很多关于Model-View-ViewModel模式的好文章,我的团队打算在最新版本的应用程序中实现这种模式。我仍然没有完全得到所有的位来使这项工作。我想找到一个我可以解决这个模式的好例子。小规模的东西,就像Jason Dolinger在他的视频here中所做的那样,但是我想要一些我可以以较慢的速度自己完成的事情。
提前感谢您的帮助。
答案 0 :(得分:28)
基本上,ViewModel是模型的包装器。现在这可能还不是很有用:-)把模型想象成你的应用程序使用的数据,比如说一个人。现在一个人有一个生日,你可能想要一个表格来输入这个人的生日。假设我们只是使用一个简单的TextBox,日期会显示01-02-2009 12:00:00 AM之类的内容。对于初学者,我们不希望时间部分,我们也可能不会对01-02-2009部分感到高兴,因为这取决于您的语言环境设置。
所以这里的ViewModel来了。它包装Person类并将日期暴露为三个整数值,年,月和日。在属性集中,它尝试从不同的值构建日期并显示可能发生的任何错误。
简单地说,ViewModel是一个专门针对特定视图(显示)的Model包装器。它同时消除了大多数IValueConvertors。
Josh Smith在这里有一个很好的解释:http://joshsmithonwpf.wordpress.com/2008/11/14/using-a-viewmodel-to-provide-meaningful-validation-error-messages并在这里进行了大讨论:http://groups.google.com/group/wpf-disciples/browse_thread/thread/3fe270cd107f184f?pli=1
答案 1 :(得分:2)
Prism 4.0现在包含用于创建MVVM应用程序的文档。这是针对使用Prism库的,但这些概念通常适用于MVVM模式。
答案 2 :(得分:2)
这里还有一个要添加到列表中的内容:Tony Sneed的简单MVVM工具包(真的是你的):http://simplemvvmtoolkit.codeplex.com。
该工具包由辅助类,Visual Studio项模板和代码片组成。除了实际的工具包之外,还有一个示例应用程序,其中包含有关如何使用MVVM模式构建基本Silverlight应用程序的分步说明。
答案 3 :(得分:1)
Nikhil Kothari有一篇关于如何在他的Silverlight.FX库中使用该模式的帖子。 请在此处查看:http://www.nikhilk.net/ViewModel-Pattern-DLR.aspx
答案 4 :(得分:1)
答案 5 :(得分:1)
我最近经历了很多,突出的两个是:
丹华林(LIDNUG):http://www.lidnug.org/Archives.aspx
John Papa(PDC 2010):
http://player.microsoftpdc.com/Session/76864d75-b4da-4858-aac7-786c5f28e344
答案 6 :(得分:1)
对于ViewModel的最好解释是由Scott Hanselman在欧洲的MVC演讲中给出的。
单线响应是 - 它是一个模型(类),其唯一目的是发送特定视图所需的所有必要数据,以及在两个情况下从视图接收修改数据方式绑定。
答案 7 :(得分:0)
看看我在Silverlight中关于真实MVVM的文章。虽然它不适合新手,并且主要针对从事现实生活项目的专业开发人员。
http://alexburtsev.wordpress.com/2011/03/05/mvvm-pattern-in-silverlight-and-wpf/