放弃MVVM什么时候有意义?

Edw*_*uay 5 wpf mvvm

在我学习WPF的过程中,我一直专注于仅将MVVM模式应用于应用程序.

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

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

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

Car*_*los 5

我认为只有视图相关的代码隐藏才行.它不会破坏MVVM,因为它是层次分离的重要因素.如果您的虚拟机不知道视图,那么我认为使用XAML或代码并不重要.您尝试最小化代码隐藏,因为它通常更简洁,更容易在XAML中执行,但有时几行代码比许多XAML更清晰.例如,绑定键盘的所有键.您可以在XAML中键入101个键绑定或5行代码.


wek*_*mpf 4

我还没有遇到任何遵循 MVVM 无法做到的事情。有些事情是困难的,是的,但是一旦找到解决方案,困难就消失了。每当你遇到困难时,请记住这种模式中的两把“大枪”:附加行为和服务。当这两个概念牢牢地在您的控制之下时,您可以使用代码隐藏做任何您不能以更干净、MVVM 友好的方式做的事情。这里棘手的部分只是找到最好的、最可重用的设计……但这在任何代码中都是如此。

什么时候放弃 MVVM 才有意义?这取决于你对放弃的定义,但简单的答案是永远不会。如果您遇到了一个正在努力解决的特定问题,并且没有时间找到一个干净的解决方案,那么务实的做法就是放弃该问题领域的模式,而不是完全像您的复杂性示例所暗示的那样。

放弃 MVVM 会在什么时候让你陷入瘫痪?当您必须维护应用程序时。

什么时候放弃 MVVM 无关紧要?演示/示例程序、废弃/简单的实用程序等。