ViewModel模式最大的痛点是什么?

时间:2009-05-05 09:06:09

标签: viewmodel mvvm presentation-model

Glenn Block和我一直在合作开发ViewModel模式。我们一直在努力确定与模式相关的最大痛点,目标是增加框架支持以减轻痛苦。

今晚,格伦发布了“View Model” – the movie, cast your vote。我们希望收到你的来信。请在此处发布(并投票)了解实现ViewModel模式(也称为Model-View-ViewModel或MVVM)的最大痛点。告诉我们框架如何让您的生活更轻松!

我们正在研究WPF和Silverlight。

请告诉我们,您希望框架做些什么来简化ViewModel?

4 个答案:

答案 0 :(得分:5)

  • 对象爆炸(现在我们同时拥有模型和视图模型)。
  • 将模型映射到viewmodel,反之亦然。

我认为两者都是必要的祸害,但它们是痛点。

答案 1 :(得分:4)

<强>集合

我希望我的Model拥有其他Model对象的集合,但是将我的GUI绑定到ViewModel对象的集合。

我可以在我的ViewModel图层中创建ObservableCollection<TViewModel>,并使用ViewModel为模型级集合中的每个项目手动填充它。这很好 - 当程序启动时。但是当用户点击“添加”按钮时会发生什么?还是删除按钮?或者上移/下移?等

是的,我可以编写代码来保持ViewModel列表与Model列表同步,但是有很多细微的边缘情况,并且需要做大量的工作(以及大量的测试)以使所有细节都正确。这是一种常见的情况,应该融入框架中。 (请?)

答案 2 :(得分:1)

INotifyCollectionChanged支持有关更改范围的通知,但是当您尝试发布范围更新时,所有WPF集合控件都会抛出范围不受支持的异常。 这意味着如果向容器中添加10个项目,则会重新评估布局10次,这对于复杂的控件来说非常慢!

解决方案是将SuspendNotifocations和ResumeNotifications方法添加到Observable集合,并使所有WPF控件都知道范围更新(用例:暂停,添加项目,恢复,一次绘制所有项目)。

答案 3 :(得分:0)

要在ViewModel类中创建的属性太多。至少我所看到的,对于你想要访问/绑定的UI元素的每个属性,你需要在ViewModel中创建太多代码来维护的属性。