我几周前开始了一个WinForms项目,由于我不知道需要哪些功能,所以一直在添加。现在导致我的主窗体成为一个混乱的代码块,例如一些重要的状态更改由UI元素触发,以至于我必须调用控件的OnChange事件才能更改数据库中的某些状态。
简而言之:我刚开始一个新项目,想采取更好的方法,但我不知道哪种是“好”的。在ASP.net MVC中,我发现MVVM模式非常有用,但在桌面上,MVVM似乎只适用于WPF,而不是WinForms。
另一种方法是三层架构:我有一个Database-Class,目前直接与UI通信。我现在创建一个新的静态类(“ApplicationState”),它与数据库通信并触发事件告诉UI“嘿,有东西变了!” UI将操纵状态,状态将处理数据库持久性,并再次引发事件以更新UI。这里的重点是ApplicationState类从不直接修改UI,而是UI订阅事件。 这看起来像一种干净/“MVC”方式,但也许我在忽略什么?
基本上,我的最终目标是使UI完全独立于数据库层,以确保我不会再将业务逻辑嵌入到UI中。