【问题标题】:MVVM layer between view model and model?视图模型和模型之间的 MVVM 层?
【发布时间】:2014-09-18 16:00:56
【问题描述】:

我的应用程序必须支持不同的 UI(Win Forms 和 WPF)。这意味着我必须封装业务逻辑。 你会怎么做呢?

例如带有 MVVM 的 WPF:

1) 我应该在我的模型类(例如汽车、门……)和视图模型之间引入一个层吗?例如通过控制类、管理器类或服务类??

2) 或者模型类(例如汽车、门……)本身是否应该包含逻辑?

【问题讨论】:

    标签: mvvm


    【解决方案1】:

    模型类通常用于在您拥有的任何 UI 层和业务逻辑之间传输数据。所以它们通常不应该包含任何逻辑。

    我没有尝试过同时支持 WPF 和 winforms(老实说,我无法找到一个必要的理由),但 AFAICT winforms 根本不支持 MVVM。是的,你可以做绑定(有点),但你不能,例如,将 ICommands 绑定到按钮。

    因此,我建议使用 ViewModel 作为 UI 和业务逻辑之间的桥梁。然后,在应用程序之间共享业务逻辑类本身。您的视图模型应该非常薄并且相对容易创建和维护。类似的桥梁可能在 winforms 项目中有用,或者只是简单地在代码隐藏中重新创建您的视图模型代码。

    【讨论】:

    • 谢谢!在您看来,当模型类不包含逻辑时,业务逻辑应该是什么样子?您是指具有所有逻辑并在哑模型上运行的服务或控件类之类的东西吗?
    • @user3084486 你的逻辑类接受参数并返回结果。参数和结果是您的模型,逻辑位于方法的主体中。模型可以像整数一样简单,也可以像 Person 那样复杂,它具有与其他类型的其他实例的属性和关系。设计自然流畅。
    • @user3084486 就像在任何其他程序中一样——获取一个实例并在其上调用方法。你如何做到这一点取决于你制作的应用程序的风格。现在停止磨蹭,去做吧!
    猜你喜欢
    • 2012-08-06
    • 2020-01-09
    • 2013-08-31
    • 2010-12-07
    • 1970-01-01
    • 2011-09-17
    • 2012-06-28
    • 1970-01-01
    相关资源
    最近更新 更多