什么MVVM框架是好的?

时间:2010-10-07 07:04:37

标签: wpf mvvm mvvm-foundation

我知道在this线程中引入的一些Mvvm框架

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

2 个答案:

答案 0 :(得分:4)

我认为你的问题不是很精确。据我了解,您要求每个框架的功能?!

您可以找到详细信息herehere。但是,至少有一个这样的链接已经在你提到的主题中给出了......

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

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

答案 1 :(得分:1)

要使用Mvvm框架,只需按照以下步骤操作:

  1. 您有一个同名的模型和视图模型。
  2. 视图模型不应该是模型的包装器。视图模型的工作是代理外部服务请求,例如加载和保存数据。数据本身以及验证和大多数业务逻辑应该在模型中。

    我不能强调这一点。每当您创建一个通过委托包装模型的视图模型时,您会在API中引入一个巨大的漏洞。特别是,任何直接引用模型的东西都可以改变属性,从而不会通知视图模型,因此也不会通知UI。同样,模型中计算字段的任何更改都不会传播回视图模型。

    1. 您有一个视图和一个名称相同的视图模型。
    2. 理想情况下,视图模型与它们所使用的屏幕无关。在WPF应用程序中尤其如此,其中多个窗口可能共享视图模型的同一实例。

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

      1. 你背后没有代码。
      2. 从绝对意义上说,背后的代码既不好也不坏。它只是一个放置特定于单个视图或控件的逻辑的地方。因此,当我看到一个没有代码隐藏的视图时,我会立即检查以下错误:

        • 视图模型是否按名称触摸特定控件?
        • 视图模型是否可以通过命令参数访问控件?
        • 是否使用EventToCommand或其他泄漏行为代替简单事件处理程序?
        来自MVVM Light的EventToCommand特别糟糕,因为它会阻止控件在从屏幕上删除后进行垃圾回收。

        1. 视图模型正在侦听属性更改通知
        2. 如果模型具有更长的寿命,那么监听其事件的视图模型可能会导致内存泄漏。与具有卸载事件的视图不同,视图模型没有生命周期管理的好故事。因此,如果他们将事件附加到可能超出它们的模型,那么视图模型将被泄露。