模型-视图-视图模型 (MVVM) 模式的优点是否值得付出这些开销?

2023-11-25

主题中提出了一个问题:模型-视图-视图模型 (MVVM) 模式的优点是否值得付出这些开销?

在许多情况下,实现视图模型涉及复制模型属性的相当大的开销,有时还涉及模型和视图模型数据成员之间的同步。例如,目前在 Silverlight 4 和 WCF RIA 中,不会生成视图模型(如果开发人员遵循 MVVM 模式,则由他来创建视图模型,通常在 ViewModel 中复制相应模型的属性,这没有什么重要作用,但将模型称为存储)。

为什么不扩展 Model 类,提供额外的属性以方便 View 使用呢?


为什么不扩展 Model 类,提供额外的属性以方便 View 使用呢?

实际上这就是演示模型是为了. MVVM 是强烈基于的。不同之处在于 ViewModel 是视图的模型,而不是数据的模型。因此,您更关心视图如何处理数据。

如果您有一个简单的 UI,它所做的只是呈现模型,那么我建议在 ViewModel 的属性上公开模型并绑定到该属性。确保模型确实实现了INotifyPropertyChanged etc.

ViewModel 的强大之处在于当您需要执行一些操作来响应用户操作时。然后,ViewModel 可以支持命令、调用服务和验证,从而将模型保留为数据容器

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模型-视图-视图模型 (MVVM) 模式的优点是否值得付出这些开销? 的相关文章

  • 如何为新的 Silverlight 应用程序在 WCF、REST、POX 和 RIA 服务之间进行选择

    There a lotSilverlight 应用程序连接回其服务器的不同方式 包括 WCF Windows 通信基础 http msdn microsoft com en us netframework aa663324 aspx RES
  • 在 silverlight 中打开响应流

    我正在尝试使用 Silverlight 3 从服务器返回图像 服务器返回响应流 如下所示 context Response ContentType imageFactory ContentType imgStream WriteTo con
  • .net 运行时 - Silverlight 运行时 =?

    我用 google 搜索了一下 但没能找到 net CLR 中的哪些类未包含在 CoreCLR 又名 Silverlight 中的详细列表 Windows net Framework 中缺少什么 Silverlight 另外 是否存在 Si
  • 如何使用 C# 中的 Caliburn.Micro 从 ListView 获取选定的项目和事件?

    我使用 Caliburn Micro 库用 MVVM C 和 XAML 编写了一个程序 我怎样才能 get all选定的项目 不仅是一项 获取选定的更改事件 通过单击标题列对项目进行排序 任何帮助 将不胜感激 图形用户界面代码 视图 Mai
  • Silverlight 5 - 改进/更改的综合列表

    是否有 silverlight 5 新增功能的完整列表 我看到了不同的博客等 但显然问题在于细节 当他们说更好的绑定支持到底有什么不同更好 等等 我想看详细的论文 Pete Brown 列出了 RC 中的主要变化 http 10rem ne
  • 如何从 main 之外的类访问 XAML 对象?

    如果我尝试 var mainpage new Mainpage 我将运行主页构造函数 然后 XAML 对象中的所有字段都将返回 null 如何在 silverlight 中访问来自不同类但属于同一命名空间的 XAML 对象 让我通过例子来解
  • MVVM ViewModel 很多属性

    我是 MVVM 新手 正在开发一个应用程序 我有一个包含很多属性的表单视图 大约 50 个 我不能将它们分离到用户控件中 因为这会破坏 mvvm 原则 我无法将它们分成模型 因为它们包含逻辑 属性更改 错误更改这些都不是 poco 类 并且
  • 重新绑定 Silverlight 列表框控件后,如何让它列表框滚动到顶部?

    我有一个 silverlight 列表框 用作搜索结果框 我正在使用动态搜索 搜索框中的按键会导致事件触发以过滤此列表框的内容 我遇到的问题是 如果用户在未过滤框时向下滚动 然后进行搜索 列表框的重新绑定不会导致滚动返回到顶部 从而使结果看
  • 我可以将 dll 添加到 Silverlight 3 应用程序吗?

    我试图将 dll 文件添加到我的 Silverlight 应用程序中 但收到错误 提示我无法添加不是使用 Silverlight 运行时构建的引用 有什么解决办法吗 Thanks 尝试使用 WCF 服务连接到您的 DLL 我就是这样做的 它
  • ListView:在资源字典中定义ItemsPanelTemplate

    我有一个 ListView 其布局看起来像 Windows 资源管理器视图 图标 一些详细信息 绑定到 ViewModel 中某处的列表 我的目标是能够随时在资源管理器视图或经典视图之间切换 我可以定义一个ItemsPanelTemplat
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • 密码盒和 MVVM

    我们有以下场景 MVVM 用户界面 用户可以在其中输入密码 实际上是一个PasswordBox 应该做一些工作的服务器 服务器连接到一些需要身份验证的数据库 我已经读过这个关于MVVM中PasswordBox的问题 https stacko
  • 输入按键的淘汰赛事件绑定会导致奇怪的行为

    长话短说 我希望用户能够在输入元素上按 Enter 键 并调用我的视图模型中的某些方法 这是我的 html 输入
  • 属性和依赖属性有什么区别

    依赖属性的创建方式与属性相同 依赖属性是否仅在创建自定义控件时使用 依赖属性和标准属性有很大不同 依赖属性提供的关键功能是支持binding and 动画片 如果您想使用Binding或模板绑定该属性需要是依赖属性 当对属性进行动画处理时
  • Android ViewModel LiveData 在按钮单击时更新视图

    我正在关注这个tutorial https developer android com topic libraries architecture guide html common problems faced by app develop
  • Silverlight 3 中 WCF 服务客户端代理的正确生命周期是什么?

    我在网上找到了我的问题的复杂答案 详细说明这个问题 我应该在每次异步调用时实例化服务客户端代理一次 还是在每个 Silverlight 应用程序中实例化一次 我是否应该显式关闭服务客户端代理 就像我在同步调用 WCF 服务的 ASP NET
  • 肥皂服务的良好框架是什么?

    我正在寻找一个用于肥皂的好框架service 我更喜欢使用Pythonic框架 但是在查看了soaplib rpclib 太不稳定 SOAPy 不适用于2 7 和ZSI 太 令人困惑 之后 我不确定这是否可能 我对使用另一种语言感到满意 尽
  • Mvvm 支持自定义 Kendo ui 小部件

    前几天我问this https stackoverflow com questions 24828905 developing custom kendo ui widget问题并得到了一个非常酷的答案 以后我想知道我是否可以使用我的自定义小
  • Silverlight 和绑定到匿名类型

    ScottGu 在一份承认的声明中指出old post http weblogs asp net scottgu archive 2007 05 15 new orcas language feature anonymous types a
  • Silverlight/WPF 按钮上的 MouseOver 样式

    努力为鼠标悬停的按钮设置样式 我已经成功地设置了按钮的样式 纯红色 但我希望每当鼠标悬停时它都会更改为纯黑色 我是 XAML 新手 我可以看到它需要某种类型的故事板 动画 不确定具体如何执行此操作 任何帮助将不胜感激 这与 WPF 和 Si

随机推荐

  • dyld:未加载库:@rpath/libswiftCore.dylib /未找到图像

    我正在从 xcode 到我的 iOS 设备运行我的应用程序 并且在 iOS 设备上出现此屏幕和黑屏 控制台文本 dyld Library not loaded rpath libswiftCore dylib Referenced from
  • 如何设置(组合)表中的两个主键

    对于一个小型的销售相关应用程序 我们使用逻辑数据模型设计数据库 上台转换成实体模型 在SQL Server Management Studio Express中创建表时 根据我们的逻辑数据模型 我们需要组合两个属性来形成唯一的id 是否可以
  • 什么是协程?

    什么是协程 它们与并发有何关系 协程和并发在很大程度上是正交的 协程是一种通用控制结构 流量控制在两个不同的例程之间协作传递而不返回 Python 中的 yield 语句就是一个很好的例子 它创建一个协程 当遇到 yield 时 函数的当前
  • 我如何知道我的 ansible 使用的是哪个版本的 Jinja2?

    我尝试使用pip list and pip freeze没有成功 这可能是显而易见的事情 但到目前为止我还无法找到它 将此文件拖放到 action plugins jin ver py from ansible plugins action
  • python 在哪里查找 Windows 上由 ctypes.cdll. 打开的 dll?

    恐怕我在互联网上找不到这个问题的简单答案 所以也许将来会因为这个问题而找到一个简单的答案 我正在使用 pywiiuse 它是 Windows 上 C wiiuse 库的 python 包装器 我已经获得了几个简单的 C 示例 只需将 dll
  • 是否可以使字母间距相对于字体大小并正确继承?

    我的问题与此基本相同 但将 line height 替换为 letter spacing 当继承相对行高时 它与元素的字体大小无关 为什么 我如何使其相对 我的用例是这样的 body font size 18px letter spacin
  • SQLite 与 EF Code First

    在我成功地将 SQLite 与 NHibernate 结合使用之后 我很高兴使用它来通过 Entity Framework Code First 进行测试 如果您有一些示例连接字符串并设置演示 那就太好了 可以为我忙碌的一天节省一些时间 多
  • 检索 R 中特定单元格的行名和列名

    因此 如果我有一个如下所示的数据框 A B C rowname1 4 5 4 3 2 rowname2 3 23 9 如何让 R 给出包含特定数字的行 列的名称 即如果我给出值 3 它会返回 rowname2 A 假设没有重复项 您可以使用
  • C# 委托未绑定到实例?

    有没有一种方法可以存储委托而不将其绑定到对象 就像使用 MethodInfo 一样 现在我正在存储一个 MethodInfo 这样我就可以给它一个对象来调用该方法 但我更愿意让它成为一名代表 就像有一个属性告诉 net 第一个参数是 thi
  • 使用 VBA 连接到 MS Access 中的 Web 服务

    是否可以通过 VBA 连接到 Web 服务 例如发送 HTTP 请求 in微软访问 例如 用户单击表单上的按钮 然后将 HTTP 请求发送到 Web 服务 该服务以OK 以前有人这样做过吗 注意 VBA 而不是 VB NET 这是我在 Ac
  • 将多维 PHP 数组转换为 javascript 数组

    我正在尝试使用 JSON 编码器将 PHP 多维数组转换为 javascript 数组 当我执行 var dump 时 我的 php 数组如下所示 array size 2 Key gt string a length 1 Value gt
  • Spring Boot:如何使用 WebClient 而不是 RestTemplate 来执行非阻塞和异步调用

    我有一个使用 Springboot Resttemplate 的 springboot 项目 我们已经从 1 5 3 迁移到 springboot 2 0 1 我们正在尝试使 其余部分通过使用 WebClient 异步调用 我们曾经使用 R
  • 如何在 Clang 中以字符串形式获取函数定义/签名?

    假设我有 CXCursor 左右 如何使用 Clang Libclang 将函数的签名 或至少整个定义 作为字符串获取 我认为可以通过使用光标的范围以某种方式获得该定义 但我真的不知道如何 使用什么函数 您可以使用这个简单的代码来获取函数的
  • C# 线程间通信

    我正在使用 NET 3 5 并试图解决一个问题 不是一个超级线程专家 请忍受我 我有一个 Windows 服务 它有一个始终运行的非常密集的进程 我已将此进程放到一个单独的线程上 以便我的服务的主线程可以处理操作任务 即服务审核周期 处理配
  • Apache Derby - 检查数据库是否已创建?

    将 Apache Derby 与 Java J2ME 但我不认为这有什么区别 一起使用 是否有任何方法可以检查数据库是否已存在并包含表 据我所知 除了很少的解决办法之外 没有任何解决办法 不像 MySQL 我们有 IF EXIST 的设施
  • PHP cURL 错误:“服务器回复为空”

    我有一个类函数与 RESTful API 接口Last FM 其目的是为我的用户获取最新的曲目 这里是 private static base url http ws audioscrobbler com 2 0 public static
  • 窗口上的 WPF 布局

    我在 WPF Windows 上有几个列表框 其中Height Auto Width Auto 在表格上设置 表单大小在不同的分辨率下完美 但问题是 当我按下最大化按钮时 在表单调整大小时会看到一个粗的 黑色 L 我在很多 WPF 应用程序
  • EF Core 数据库中已有一个名为“AspNetRoles”的对象

    我正在接收已经有一个名为AspNetRoles在数据库中 尝试使用时出错update databaseNuGet 控制台中的命令 Context public class ApplicationDbContext IdentityDbCon
  • JWT 正在发行相同的令牌

    我正在制作一个rest APIJersey 我在用java jwt https github com auth0 java jwt 用于我的代币生成工作 请检查下面的代码 用户JSON信息 REST方法类 Path user info pu
  • 模型-视图-视图模型 (MVVM) 模式的优点是否值得付出这些开销?

    主题中提出了一个问题 模型 视图 视图模型 MVVM 模式的优点是否值得付出这些开销 在许多情况下 实现视图模型涉及复制模型属性的相当大的开销 有时还涉及模型和视图模型数据成员之间的同步 例如 目前在 Silverlight 4 和 WCF