0

我知道这个线程中介绍的一些 Mvvm 框架

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

4

2 回答 2

5

我认为你的问题并不准确。据我了解,您询问每个框架的功能?!

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

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

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

于 2010-10-07T09:11:01.273 回答
1

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

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

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

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

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

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

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

  1. 你后面没有代码。

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

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

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

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

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

于 2012-02-12T08:09:20.790 回答