【发布时间】:2011-04-18 08:14:42
【问题描述】:
在 WPF 中实现我的第一个 MVVM 应用程序时,我一直想知道将模型集合包装在相关的 ViewModel 集合中以在视图中使用的优缺点。
在我们的系统中,我们可能有几个潜在的大型集合,例如订单中的订单行,以及可以为订单行选择的库存项目。目前这些都是在Data Access层从SQL中查找,然后循环SqlDataReader来创建Model Objects的集合。
然后在创建 ViewModel 对象集合时围绕 Model 对象集合循环似乎是不必要的开销。当有大量 Model 对象集合时,直接在 View 上公开这些对象会更好吗?
提前感谢您的帮助,马克
编辑 在阅读这个主题时,我发现 this MSDN article 从今年 7 月开始(由 Josh Smith 评论过),它给出了一个非常平衡的 MVVM 视图,并且在“集合”部分中这样说:
集合的另一个问题是 确定何时或是否包装每个 集合中的模型实例 在 ViewModel 实例中。为了 较小的集合,ViewModel 可能 公开一个新的可观察集合并 复制底层证券中的所有内容 模型集合到 ViewModel 可观察的集合,包装每个 集合中的模型项 对应的 ViewModel 实例 去。 ViewModel 可能需要 侦听集合更改的事件 将用户更改传输回 底层模型。
但是,对于非常大的集合 会以某种形式暴露 虚拟化面板,最简单 最务实的做法就是 直接公开模型对象。
非常感谢到目前为止的 cmets,尝试限制传递到 ViewModel 的数据量,或者使用分页或其他合适的控件会减少问题,我敢肯定,但我想知道是否还会出现以下情况最好简单地绑定到 ViewModel 中的模型对象集合?
【问题讨论】:
-
Ted 是我的昵称 查看我的真名模特 Mark! (而这条评论就是 ViewModel?!)