【问题标题】:What goes in Model in MVVM?MVVM 中的模型有什么?
【发布时间】:2010-12-15 18:10:51
【问题描述】:

应该进入模型的东西也被允许进入视图模型,即Public Properties、IDataErroInfo和INotifyPropertyChanged,那么实际上应该进入模型的东西是什么?

【问题讨论】:

    标签: wpf mvvm


    【解决方案1】:

    型号

    业务数据 + 业务逻辑 + 业务规则

    查看

    应用界面

    视图模型

    Wrapper Over Model,View 使用最少的工作量/代码即可轻松读取/绑定。

    1. IDataErrorInfo - 应该进入 ViewModel
    2. INotifyPropertyChanged - 应该进入 ViewModel。必要时也可以进入模型(但不推荐)
    3. 公共属性 - 是的,模型当然应该拥有它们。

    【讨论】:

    • 糟糕,模型应该完全独立于 UI。 INotifyPropertyChanged 是一个 UI 问题。我从不在模型中实现 INPC。模型需要尽可能简洁和独立。例如“银行账户”永远不会负责通知任何数据更改。
    • @PeterRitchie:我完全同意。您可以阅读(如果需要)=(不推荐)
    • 当然。即成功的编译意味着你可以做很多事情;这并不意味着你应该这样做。
    • INotifyPropertyChanged 不是 UI 问题。这是一个通知更改属性的接口,不多也不少。因此,如果您愿意,可以在模型中使用它。
    • 实际上,让模型实现 INPC 可以节省大量从模型到视图模型到视图的样板重新传递属性。
    【解决方案2】:

    假设您要为数据加载编写批处理。批处理只会访问模型,因此处理与 UI 分离的业务规则所需的一切都属于模型。 ViewModel 可能有一些业务规则,但仅限于与 UI 相关的规则。

    在我正在构建的应用程序中,视图和视图模型在一个程序集中,而模型在另一个程序集中。模型没有对视图程序集的引用,只有模型程序集对底层数据存储(Linq 和 Web 服务调用的组合)有引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      • 2014-10-09
      • 1970-01-01
      • 2013-02-03
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多