我知道一些MVVM框架引入了 线

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

有帮助吗?

解决方案

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

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

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

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

其他提示

要使用MVVM框架,只需按照以下步骤即可:

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

View Models不应该是围绕型号的包装器。视图模型的工作是向外部服务(例如加载和保存数据)进行代理请求。数据本身以及验证以及大多数业务逻辑应在模型中。

我不能强调这一点。每当您创建一个通过委托包装模型包装模型的视图模型时,您就会在API中引入一个巨大的漏洞。特别是,直接引用该模型的任何内容都可以以某种方式更改属性,从而使视图模型和UI永远不会通知。同样,模型中计算出的字段的任何更改都不会传播回视图模型。

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

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

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

  1. 您没有后面的代码。

从绝对的角度来看,背后的代码既不是一件好事也不是坏事。它仅仅是放置特定于单个视图或控制的逻辑的地方。因此,当我看到没有代码的视图时,我立即立即检查以下错误:

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

MVVM Light的EventTocommand尤其糟糕,因为它将防止在将其从屏幕上取出后收集垃圾。

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

如果模型具有更长的寿命,则可以听取事件的视图模型,那么您可能会有内存泄漏。与有卸载事件的观点不同,View Models对生命周期管理没有一个好的故事。因此,如果他们将事件附加到可能超过它们的模型上,则将泄漏视图模型。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top