在我学习WPF的过程中,我一直专注于仅将MVVM模式应用于应用程序.
但是,我注意到对于某些功能(例如验证),很难或不可能保持MVVM模型的真实性.很多时候只需在元素上粘贴一个x:Name并在代码隐藏事件处理程序中更改它就可以立即解决问题.
放弃MVVM模式你有什么现实经验?
我认为只有视图相关的代码隐藏才行.它不会破坏MVVM,因为它是层次分离的重要因素.如果您的虚拟机不知道视图,那么我认为使用XAML或代码并不重要.您尝试最小化代码隐藏,因为它通常更简洁,更容易在XAML中执行,但有时几行代码比许多XAML更清晰.例如,绑定键盘的所有键.您可以在XAML中键入101个键绑定或5行代码.
我还没有遇到任何遵循 MVVM 无法做到的事情。有些事情是困难的,是的,但是一旦找到解决方案,困难就消失了。每当你遇到困难时,请记住这种模式中的两把“大枪”:附加行为和服务。当这两个概念牢牢地在您的控制之下时,您可以使用代码隐藏做任何您不能以更干净、MVVM 友好的方式做的事情。这里棘手的部分只是找到最好的、最可重用的设计……但这在任何代码中都是如此。
什么时候放弃 MVVM 才有意义?这取决于你对放弃的定义,但简单的答案是永远不会。如果您遇到了一个正在努力解决的特定问题,并且没有时间找到一个干净的解决方案,那么务实的做法就是放弃该问题领域的模式,而不是完全像您的复杂性示例所暗示的那样。
放弃 MVVM 会在什么时候让你陷入瘫痪?当您必须维护应用程序时。
什么时候放弃 MVVM 无关紧要?演示/示例程序、废弃/简单的实用程序等。