正统的 MVVM 实现毫无意义吗?我正在创建一个新的应用程序,我考虑了 Windows 窗体和 WPF。我之所以选择 WPF 是因为它不会过时,而且提供了很大的灵活性。使用 XAML 代码更少,更容易对 UI 进行重大更改。
由于 WPF 的选择是显而易见的,我认为我可以一直使用 MVVM 作为我的应用程序架构,因为它提供了可混合性、分离性和单元测试性。从理论上讲,它看起来像是 UI 编程的圣杯。然而,这次短暂的冒险却变成了一件令人头疼的事。 不出所料,我发现我已经用一个问题换来了另一个问题。我倾向于成为一个执着的程序员,因为我想用正确的方式做事情,这样我就可以得到正确的结果,并且可能成为一个更好的程序员。MVVM 模式刚刚在我的生产力测试中不及格,并且已经变成了一个令人讨厌的大黑客!
最明显的例子就是添加对 Modal 对话框的支持。正确的方法是放置一个对话框并将其绑定到一个视图模型。让这个起作用很难。为了从 MVVM 模式中获益,您必须将代码分布在应用程序各层的多个位置。您还必须使用深奥的编程构造,如模板和 lamba 表达式。让你盯着屏幕抓耳挠腮的东西。正如我最近发现的那样,这使得维护和调试成为一个等待发生的噩梦。我有一个 about 框工作得很好,直到第二次调用它时出现异常,说它关闭后不能再次显示该对话框。我必须为对话窗口的关闭功能添加一个事件处理程序,在其 IDialogView 实现中添加另一个事件处理程序,最后在 IDialogViewModel 中添加另一个事件处理程序。我以为 MVVM 会把我们从这种铺张浪费的黑客手法中拯救出来!
有几个人对这个问题提出了相互竞争的解决方案,他们都是些技巧,不能提供一个干净的、易于重用的、优雅的解决方案。大多数 MVVM 工具包都掩盖了对话框,当它们确实处理对话框时,它们只是警告框,不需要自定义接口或视图模型。
我打算放弃 MVVM 视图模式,至少放弃它的正统实现。你觉得怎么样?如果你有孩子的话,你觉得值得吗?我只是一个无能的程序员还是 MVVM 不是它所宣传的那样?