gpt4 book ai didi

c# - WinForms 应用程序的体系结构?

转载 作者:可可西里 更新时间:2023-11-01 08:05:22 25 4
gpt4 key购买 nike

几周前我开始了一个 WinForms 项目,因为我真的不知道我想要什么功能,所以我只是一路添加它们。这现在造成了一个可怕的困惑,我的 MainForm 是一个大泥球,例如一些重要的状态更改是由 UI 元素触发的,以至于我必须调用控件的 OnChange 事件才能更改数据库中的某些状态.

简而言之:我刚刚开始了一个新项目,我想在其中采用更好的方法。我只是不知道哪个是“好”的。在 ASP.net MVC 中,我发现 MVVM 模式非常有用,但在桌面上,MVVM 似乎只适用于 WPF,不适用于 WinForms。

另一种方法是三层架构:我有我的数据库类,它目前直接与 UI 对话。我现在创建一个新的静态类(“ApplicationState”),它与数据库对话并触发事件来告诉 UI“嘿,有些东西变了!”。 UI 将操纵状态,然后状态将处理数据库持久性,并在 UI 需要更新时再次引发事件。这里的重点是,ApplicationState 类从不直接修改 UI,而是 UI 订阅了 Events。这看起来是一种干净的/“MVC-y”方式,但也许我在这里忽略了什么?

基本上我的最终目标是让 UI 完全独立于数据库层,以确保我不会再次将业务逻辑连接到 UI。

最佳答案

不要认输 MVVM - 它对 WinForms 也有效。基本上,如果你使用数据绑定(bind),你必须决定你的对象将绑定(bind)到什么。通常,尤其是对于更复杂的 UI,你不想直接绑定(bind)到你的领域对象,你想要构建你的 UI 可以绑定(bind)的专门类(有时是包装器),它提供 View 所需的一切(MVVM 的本质)和技术与 Winforms 一起工作。

有关 WinForms Model-View-Presenter 方法的系列文章可以在以下位置找到

The Build Your Own CAB Series Table of Contents

关于c# - WinForms 应用程序的体系结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1324603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com