【问题标题】:What MVVM framework is Good For?什么 MVVM 框架适合?
【发布时间】:2012-02-12 16:09:20
【问题描述】:

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

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

【问题讨论】:

  • 如果您知道 MVVM 是什么(正如您在问题中暗示的那样),您肯定已经知道了吗? “[MVVM 框架] 有什么用处?”用于实现 MVVM!

标签: wpf mvvm mvvm-foundation


【解决方案1】:

我认为您的问题并不准确。据我了解,你问的是每个框架的特点?!

您可以找到详细信息herehere。但是,您提到的线程中至少已经给出了其中一个链接......

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

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

【讨论】:

  • 1) MVVM 适用于任何项目规模。您还可以使用 MVVM 实现软件的某些部分,而其他部分则不使用。这只是一个模式! 2) “与 LINQ 兼容” 是什么意思?当然,您可以在代码中使用 LINQ。这是两个完全不同的话题。 3) 这同样适用于实体框架。
【解决方案2】:

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

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

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

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

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

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

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

  1. 您没有隐藏代码。

绝对而言,代码落后既不是好事也不是坏事。它只是放置特定于单个视图或控件的逻辑的地方。因此,当我看到一个完全没有代码隐藏的视图时,我会立即检查以下错误:

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

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

  1. 视图模型正在监听属性更改通知

如果模型的生命周期比监听其事件的视图模型更长,那么您可能存在内存泄漏。与具有卸载事件的视图不同,视图模型在生命周期管理方面没有很好的故事。因此,如果他们将一个事件附加到一个可能比他们更持久的模型上,那么视图模型就会被泄露。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 2013-06-20
    相关资源
    最近更新 更多