2010-10-07 84 views
0

我知道在this线程中引入的一些Mvvm框架线程什么是MVVM框架?

请描述或给我链接,它们有什么用处? 没有关于MVVM关于MVVM框架的信息。 谢谢:) 我想知道: 什么是MVVM框架?

+1

如果你知道MVVM是什么(就像你在暗示你的问题),你一定知道? “什么是[MVVM框架]有用?”为了实现MVVM! – 2010-10-07 12:52:49

回答

4

我认为你的问题并不十分精确。据我了解,你问每个框架的功能?!

你可以找到详细的信息herehere。然而,这些链接中的至少一个已经在你所提到的线程给出...

编辑:
基本上,MVVM框架是,它们通常利用MVVM应用程序中使用的类的集合( Model-View-ViewModel)模式。这可能包括消息传递系统在软件的独立部分,依赖注入技术,ViewModel的基类,项目/类模板,验证机制,常用命令,显示对话框的技术等之间进行通信......

要完全理解这样的框架,您必须首先了解MVVM模式。因为只有这样(或者甚至在你完成第一个MVVM项目之后),你才能理解这种模式的问题和/或挑战。

+0

我想知道:什么是MVVM框架? – Shahin 2010-10-07 10:09:54

+1

看到我上面的修改。 – gehho 2010-10-07 12:48:18

+1

1)MVVM对于任何项目大小都很有用。您也可以使用MVVM实现软件的某些部分,而没有其他部分。这只是一个模式*! 2)你的意思是“与LINQ兼容”*?当然,你可以在你的代码中使用LINQ。这是两个完全不同的主题。 3)同样适用于实体框架。 – gehho 2010-10-07 13:13:55

1

要使用MVVM框架只是简单的按照以下步骤进行:

  1. 你有一个模型和视图模型具有相同的名称。

视图模型不应该是模型周围的包装。视图模型的工作是代理对外部服务的请求,例如加载和保存数据。数据本身以及验证和大部分业务逻辑都应在模型中。

我不能强调这一点。无论何时你创建一个由代表团包装模型的视图模型,你都会在你的API中引入一个巨大的漏洞。特别是,任何对模型有直接引用的东西都可以改变属性,使得视图模型以及UI从未被通知。同样,对模型中计算字段的任何更改都不会传播回视图模型。

  1. 您有一个视图和一个同名的视图模型。

理想情况下,视图模型与它们使用的屏幕是不可知的。在WPF应用程序中,多个窗口可能共享同一个视图模型实例的情况尤其如此。

对于较小的应用程序,您可能只需要一个单一的视图模型为整个应用程序。对于较大的应用程序,您可能需要一个用于主要功能,另一个用于每个辅助方面(如配置管理)。

  1. 您没有背后的代码。

从绝对的角度来看,背后的代码既不是一件好事,也不是一件坏事。它只是一个把逻辑放在单个视图或控件上的地方。所以当我看到没有代码隐藏的视图时,我立即检查以下错误:

  • 视图模型是否按名称触摸特定控件?
  • 视图模型是否可以通过命令参数访问控件?
  • 是否使用EventToCommand或其他泄漏行为来代替简单的事件处理程序?

来自MVVM Light的EventToCommand尤其糟糕,因为它会阻止控件在从屏幕中移除后进行垃圾回收。

  1. 查看的模型正在听属性更改通知

如果模型具有更长的寿命,那么该视图模型侦听它的事件,那么你可能有内存泄漏。与具有卸载事件的视图不同,视图模型对于生命周期管理没有好的故事。所以如果他们将一个事件附加到一个可能超出它们的模型上,那么视图模型将被泄漏。