什么时候放弃 MVVM 才有意义?

2023-11-21

当我学习 WPF 时,我一直专注于仅应用MVVM模式到应用程序。

但是,我注意到对于某些功能比如验证,很难或不可能保持 MVVM 模型的真实性。很多时候只是简单地粘贴x:Name在一个元素上并改变它代码隐藏事件处理程序立即解决问题。

你有什么现实世界的经验放弃MVVM模式?

  • 什么时候放弃 MVVM 才有意义?例如您是否制定了规则,如果应用程序具有一定的复杂性,您将使用它,否则您不会?
  • 什么时候放弃MVVM稍后让你瘫痪(例如,我可以想象,如果您想升级应用程序以使用复合应用程序库,如果您将所有逻辑都放在代码后面,则注入 ViewModel 和容器的整个概念将不起作用
  • 什么时候放弃MVVM没关系,例如我可以想象,你不想/不需要测试的代码可以放在后面的代码中,而你的基本结构仍然是 MVVM 并通过模拟测试等运行。

我认为如果代码隐藏仅与视图相关,那么它就很好。它不会破坏 MVVM,因为重要的是层的分离。如果您的虚拟机不知道视图,那么我认为您是否使用 XAML 或代码并不重要。您尝试最大限度地减少代码隐藏,因为它通常在 XAML 中更干净、更容易执行,但有时几行代码比大量 XAML 更干净。例如绑定键盘的所有按键。您可以在 XAML 中键入 101 个键绑定或 5 行代码。

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

什么时候放弃 MVVM 才有意义? 的相关文章

  • 为什么绑定到 IEnumerable 的 ListBox 不更新?

    我有以下 XAML
  • WPF 画布缩放/变换以适合

    我重新发布这个问题 因为上次我没有得到太多答复 希望重新措辞可能有所帮助 本质上 我想做的是创建一个数据绑定画布 它将自动缩放其内容以 填充 可用空间 有点像缩放以适应操作 不幸的是 我的 WPF 技能还不是很强 我正在努力弄清楚如何完成最
  • 给一个窗口句柄(Native),如何使用C#关闭窗口?

    给定一个窗口句柄 如何使用该窗口句柄关闭该窗口 最简单的方法是使用 PInvoke 并执行SendMessage with WM CLOSE DllImport user32 dll CharSet CharSet Auto private
  • DataContractSerializer 事件/委托字段问题

    在我的 WPF 应用程序中 我正在使用DataContractSerializer序列化对象 我发现它无法序列化具有事件或委托声明的类型 考虑以下失败的代码 Serializable public abstract class BaseCl
  • “从另一方收到不安全或不正确安全的故障”

    我越来越 从另一方收到不安全或不正确安全的故障 有关故障代码和详细信息 请参阅内部故障异常 我已经在客户端完成了此操作 并且在控制台应用程序中完成了相同的操作 但是出现的错误可能是某些冲突 我已经检查过app config以及 Code i
  • 为什么Windows 7无法加载程序集PresentationFramework.Aero2?

    我最近完成了我使用 Windows 8 开发的第一个 WPF 应用程序 它在我的机器上运行良好 我的一个朋友也在他的 Windows 8 机器上的 Visual Studio 中运行了它 并且成功了 我在我的机器上使用单击一次安装该程序 它
  • 命令绑定到 ContextMenu(在 ListBox 中的 ListBoxItem 上)不起作用[重复]

    这个问题在这里已经有答案了 在 WPF 中 借助 MVVM 光 有一个Class 由一些学生组成 以及Class持有一些Students 右键单击一个学生的名字 然后会显示一个MessageBox 这样就可以了 类详细信息视图 xaml
  • 多边形边界与具有 ScaleTransform 的画布上的视觉效果不匹配

    以下 XAML 只是画布上缩放为 x2000 的多边形 当鼠标悬停在多边形上时 有一个触发器会更改多边形的填充颜色 为什么当您将鼠标悬停在多边形上方和左侧时 框会改变颜色
  • WPF - 全局添加xaml命名空间声明

    我有一个相当大的 WPF 应用程序 其中包含大量 XAML 文件 每个 XAML 文件都有 5 到 10 个 clr 到 xml 命名空间映射xmlns abc clr namespace Abcdef 它看起来很糟糕 并且在每个文件中写入
  • 如何禁用箭头键更改焦点

    我有一个 WPF 窗口 其中有一些控件 按钮 组框等 和一个大控件Viewport3D在一个Border 视口显示 3D 场景 我希望使用箭头键来移动其相机 问题 方向键总是将焦点改变到另一个UIElement 如何通过箭头键禁用焦点更改并
  • 从 Angular 2 和 Silverlight 应用程序使用相同的 WCF 服务

    目前 我们有一个带有 WCF 服务 后端 的 Silverlight 应用程序 前端 现在 我们将用 Angular 2 应用程序替换 Silverlight 应用程序 而不更改 WCF 服务 只有 UI 会发生变化 在开始使用 Angul
  • MVVM 在 ASP.NET MVC 4 Web 应用程序中扮演什么角色?

    当我正在阅读 ASP NET MVC 4 这本书时 我对 MVVM 感到好奇 我开始谷歌搜索 找不到任何关于使用 MVVM 开发 Web 应用程序的书籍 所以我一定在这里遗漏了一些信息 据我了解 MVVM是通过knockout js和其他框
  • 如何将绑定源设置为“self”/UserControl 代码隐藏

    如何设置绑定源以指向 此 UserControl CodeBehind 例如 从用户控件MarkdownEditor xaml 我想指出其中的属性MarkdownEditor xaml cs 无需设置即可执行此操作DataContext t
  • 在代码后面绑定属性

    我有 WPF 应用程序和其中的一个窗口 让我们在我的 xml 中添加这样的内容
  • 将占位符文本添加到文本框

    我正在寻找一种将占位符文本添加到文本框的方法 就像在 html5 中使用文本框一样 IE 如果文本框没有文本 则会添加文本Enter some text here 当用户单击它时 占位符文本消失并允许用户输入自己的文本 如果文本框失去焦点并
  • 读取WPF应用程序的程序集版本信息

    我正在阅读我的 wpf 应用程序的版本信息 但我没有得到我所写的正确版本AssemblyInfo cs文件 我的文件中有 assembly AssemblyVersion 0 1 001 assembly AssemblyFileVersi
  • SpeechSynthesizer 中的持续内存泄漏

    我开发了一个项目 我想发布它使用 c WPF 和 System Speech Synthesizer 对象 阻止该项目发布的问题是 每当调用 SpeakAsync 时 都会留下内存泄漏 并最终导致失败 我相信在使用这个物体后我已经正确清理了
  • 如何在运行时更改元素样式?

    我有一个元素和多种样式 如何在运行时以编程方式或通过 XAML 绑定在样式之间切换
  • 当应用程序未聚焦时监听按键

    我有一个应用程序 C 4 0 WPF 它是隐藏的 可以通过单击系统托盘图标或我创建的其他框架 停靠在左侧和最上面的小框架 来显示 My customer wants to add a new way to display the appli
  • 如何使WPF TreeView风格成为WinForms TreeView?

    WPF 默认的 TreeView 非常好 我仍然希望它有连接每个子元素的线 就像 Windows 窗体 TreeView 一样 我在网上搜索了一些例子 但设计得不够好 我怎样才能用WPF实现它 让我回答我自己的问题 Code 您需要做的只是

随机推荐

  • 如何使用javascript从IE中的iframe中删除边框

    我正在尝试通过 javascript 将 iframe 插入浏览器 DOM 中 并希望删除 IE 的边框 但似乎无法删除 我已经尝试过这些但无济于事 iframeElement style borderStyle none and ifra
  • 用于索赔模式 xRM 的 Apache CXF 客户端(Microsoft Dynamics CRM 2011)?

    我正在尝试为 Microsoft Dynamics CRM 2011 xRM Web 服务 我理解为基于 WCF 4 创建 Apache CXF 2 7 5 客户端 其中 CRM 处于声明模式 以便 WSDL此 Web 服务指向 STS 在
  • “endl”和“\n”之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 C std endl 与 n 我想知道是否有重要的这两种打印换行符的方法之间的区别 cout lt lt endl approach1 cout lt lt n approach2 有什么实际区别吗
  • 正则表达式否定整个单词? [复制]

    这个问题在这里已经有答案了 String test1 This is my test string 我想匹配一个不包含 test 的字符串 我可以用 Pattern p Pattern compile test 它有效 但在大多数网站上 例
  • Windows 上的 Python 和 XAMPP:如何做?

    我已经在我的 Win7x64 Xampp 和 Python 2 7 上安装了 现在我正在尝试获得Python语言的 力量 我该怎么做 我尝试过 mod python 和 mod wsgi 但第一个对于我的 Python 版本不存在 当我在安
  • 错误 CS2012:无法打开 <可执行路径> 访问 <可执行路径被拒绝>

    我当时正在 Visual Studio 2015 中开发 WPF 应用程序 一切都很顺利 直到意外地生成了 CS2012 错误 通知我它无法访问 更新 Debug 目录中的可执行文件 我尝试了以下方法但没有成功 Restart 关闭VS并再
  • 创建表单并在后台线程上使用 Form.ShowDialog

    使用Winforms 如果我所在的线程不是 主 ui 线程 我可以安全地进行操作吗 创建一个表格 在该表单上调用 ShowDialog 看来我会遵守以下规则 Winforms 控件必须在创建它们的线程上进行修改 从我完成的一些阅读来看 Sh
  • OpenCV TypeError:轮廓不是 numpy 数组,也不是标量

    我正在尝试使用 OpenCV 从 Nike 图像中提取标签 这是一个教程代码 取自 http opencv code com tutorials ocr ing nikes new rsvp program 我已经修改了几行代码 并且该部分
  • 指南针精灵图像和比例

    在过去的 4 个小时里 我一直在尝试找到一种使用 Compass 和 sass 创建精灵图像的方法 该图像还可以自动缩放每个单独的图像以与背景大小属性一起使用 我发现没有任何效果 不敢相信有这么难 有人有一个可行的例子吗 编辑 这是我到目前
  • 在线游戏,或者比ajax更快的东西来发送/接收数据

    我会尽可能地缩短它 到目前为止我所做的 我的游戏将使用 JavaScript 运行setTimeout or setInterval 这不是闪光灯或任何特殊的东西 到目前为止 我所做的就像一个测试运行 这样你可以更好地理解 几乎是循环 Aj
  • 为什么使用 Func 而不是 Predicate

    这只是一个好奇的问题 我想知道是否有人有一个好的答案 在 NET Framework 类库中 我们有以下两个方法 public static IQueryable
  • 如何在 C# 中实现进度条?

    如何在 C 中实现数据库调用的进度条和后台工作程序 我确实有一些处理大量数据的方法 它们是相对较长的运行操作 因此我想实现一个进度条 让用户知道确实发生了一些事情 我想过使用进度条或状态条标签 但由于只有一个 UI 线程 即执行数据库处理方
  • 如何在 Java 15 及以后版本中继续使用 Javascript

    在我的 Java 应用程序中 一个重要的小功能是能够根据音频文件的元数据 例如专辑 艺术家 标题 重命名音频文件 并且使用指定掩码JavaScript 这使得重命名功能非常灵活和强大 我知道 Javascript 已被弃用 但现在看来它实际
  • 适用于德尔福 2006/德尔福 2007/德尔福 2009 的 FitNesse

    是否有适用于 Delphi 2006 2007 2009 的 FitNesse 版本 如果是的话我在哪里可以找到它 还有其他类似 FitNesse 的程序可以在 Delphi 2006 上运行吗 Fitnesse 支持 Delphi 请参阅
  • eclipse 产品调用导致 java.lang.RuntimeException: 未找到应用程序 id

    我刚刚导出了一个产品 如果我点击 启动 Eclipse 应用程序 按钮 该产品就可以正常工作 如果尝试执行导出的产品 我会在启动时收到以下异常 SESSION 2012 03 16 17 28 21 206 eclipse buildId
  • 无法在 Linux 中复制名称中包含“$”的文件

    在我的 Linux 目录中 有一个名为TopSample Config class 每当我尝试将此文件复制到另一个位置 目录时 它都不允许我这样做 我这样做 cp TopSample Config class home praveen co
  • Freeradius 和 PHP 身份验证脚本

    我正在尝试根据 PHP 脚本对 freeradius 用户进行身份验证 但没有成功 我已经尝试了几个小时来配置这个权利 而我在谷歌上找到的所有线程要么是死链接 要么是过时的 半径配置文件 prefix usr exec prefix usr
  • 使用 netcat 逐行发送文本文件

    我正在尝试使用以下命令逐行发送文件 nc host port lt textfile cat textfile nc host port 我尝试过tail and head 但结果相同 整个文件作为唯一的行发送 服务器正在使用特定的守护进程
  • 将 SSL 证书附加到 Terraform 中的 Azure 应用程序网关

    我尝试使用 Terraform 自动部署应用程序网关已经花了很长时间 但它只是失败并显示错误消息 我已确保所有协议设置为 HTTPS 不过 我怀疑 PFX 证书有问题 是不是我没有提供身份验证证书导致失败 在网上尝试了很多方法来获得解决方案
  • 什么时候放弃 MVVM 才有意义?

    当我学习 WPF 时 我一直专注于仅应用MVVM模式到应用程序 但是 我注意到对于某些功能比如验证 很难或不可能保持 MVVM 模型的真实性 很多时候只是简单地粘贴x Name在一个元素上并改变它代码隐藏事件处理程序立即解决问题 你有什么现