我们什么时候使用MVVM?

时间:2010-04-08 14:58:38

标签: c# wpf design-patterns mvvm

我听过很多关于MVF MVVM的炒作。
我们什么时候使用它?
它是用于一切还是仅具有特定用途?
每个项目都值得吗?

6 个答案:

答案 0 :(得分:6)

它在任何项目中都很有用,但我发现它特别适用于需要在业务逻辑,交互逻辑和用户界面之间提供明确分离的情况(涉及多个开发人员/设计人员的大型应用程序或应用程序)。

模型=业务逻辑

  • 包含我正在使用的任何业务流程/对象的模型。

ViewModel =互动逻辑

  • 控制模型访问和修改方式的所有代码(例如编辑/撤消功能,延迟加载等)

查看=用户界面

  • 用户与之交互的接口(在XAML中定义)。我尝试最小化在此层中使用代码隐藏,将其推送到附加属性或ViewModel。

毫无疑问,MVVM还有很多其他用途,但我发现这个特殊场景在我自己的WPF开发体验中是最有用的。

答案 1 :(得分:1)

我发现,即使在相对较小的项目中,如果我大量使用数据绑定和对象数据模型/模型,它也很有用。

答案 2 :(得分:1)

在WPF和Silverlight方面?

理论上的一切 - 每个非平凡的项目(甚至可能是那时)。它是更广泛的过程的一部分(它创造了关注点的分离,允许测试和其他好东西)。基本上如果你要去做(而且我认为你可能想要,我当然打算用新项目),那么你应该全面地做到这一点。

如果您还没有,请观看从此处链接的视频:http://blog.lab49.com/archives/2650 - 我发现它非常有助于我的想法。

答案 3 :(得分:1)

最好问一下:不应该时使用它?最明显的例子是当数据绑定不合适并且您必须直接在代码中操作视图的元素时 - 例如,如果您的应用程序需要实时更新数百或数千个视觉元素的可视状态,您可能无法承受数据绑定的开销。

答案 4 :(得分:0)

我目前正在开展一个大型项目,我们在Silverlight中实现了mvvm,CAL(复合应用程序指南)。当然,关注点的分离程度非常高。但是

1)代码过于健全。

2)MVVM看起来很适合小型项目(所有这些遍布互联网的hello-world样本),但它会降低你的机会:例如,路由事件(伟大的仪器)仍然是事件,但是,如你所知,它是如果你想关注mvvm,严格禁止直接使用它们,只要这是代码隐藏的。

3)命令绑定STILL在Silverlight(.net4.0,vs2010)中无法正常工作。这是一个很长的故事,只要记住这个惊喜,当你的CanExecute代表不会在应用程序启动时触发。

对于您的问题,一个很好的答案是“MVVM适用于具有简单UI逻辑的项目。”

谢谢,伊利亚。

答案 5 :(得分:0)

每次我开始一个简单的项目,并认为“这很简单,MVVM会有点过分”,大约8个小时后,我达到了一个点,我意识到使用MVVM会使事情很多更简单。

所以我说大多数时候使用MVVM实际上会简化你的UI逻辑,即使你最初认为它会有点过分。随着时间的推移,项目习惯变得越来越复杂,MVVM强制执行的业务逻辑和视图逻辑的分离使项目能够以比业务和UI逻辑混合在一起的更加可控的方式增长。