正统的MVVM实现是没有意义的吗?我正在创建一个新的应用程序,并且考虑了Windows Forms和WPF。我选择WPF是因为它可以面向未来并且具有很大的灵活性。使用XAML的代码更少,可以更轻松地对UI进行重大更改。
由于WPF的选择是显而易见的,因此我认为,最好还是使用MVVM作为我的应用程序体系结构,因为它提供了可混合性,分离性和单元可测试性。从理论上讲,它看起来像UI编程的圣杯一样美丽。这短暂的冒险;但是,已经变成了真正的头痛。正如实践中所期望的,我发现我已经将一个问题换成了另一个。我倾向于成为一个痴迷的程序员,因为我想以正确的方式做事,以便获得正确的结果,并有可能成为更好的程序员。MVVM模式使我的生产力测试不及格,并且变成了一个巨大的麻烦!
最明显的例子就是增加了对“模态”对话框的支持。正确的方法是建立一个对话框并将其绑定到视图模型。使其难以工作。为了从MVVM模式中受益,您必须在应用程序的各个层中的多个位置分发代码。您还必须使用诸如模板和lamba表达式之类的深奥编程结构。东西使您凝视屏幕,挠挠头。正如最近发现的那样,这使得维护和调试成为一场噩梦。我有一个about框可以正常工作,直到我第二次调用它时出现异常,然后说它一旦关闭就无法再次显示该对话框。我必须为对话框的关闭功能添加一个事件处理程序,IDialogView实现中的另一个,最后是IDialogViewModel中的另一个。我以为MVVM可以将我们从如此奢侈的黑客中拯救出来!
有好几个人在为这个问题提供竞争解决方案,他们都是黑客,不能提供干净,易于重用的优雅解决方案。大多数MVVM工具箱都会掩盖对话框,当它们确实解决对话框时,它们只是警报框,不需要自定义界面或视图模型。
我打算放弃MVVM视图模式,至少是它的正统实现。你怎么看?如果您有任何麻烦,对您来说值得吗?我只是一个能力不强的程序员,还是MVVM并不是它所宣传的那样?