3

Glenn Block 和我一直在研究 ViewModel 模式。我们一直在尝试确定与该模式相关的最大痛点,目标是添加框架支持以减轻痛苦。

今晚,格伦发布了“查看模型”——这部电影,投出你的一票。我们希望收到你的来信。请在此处发布(并投票)关于实现 ViewModel 模式(也称为 Model-View-ViewModel 或 MVVM)的最大痛点。告诉我们该框架如何让您的生活更轻松!

我们正在研究 WPF 和 Silverlight。

那么告诉我们,您希望框架做什么来使 ViewModel 更容易?

4

4 回答 4

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

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

于 2009-05-05T16:00:09.037 回答
4

收藏品。

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

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

是的,我可以编写代码来使 ViewModel 列表与 Model 列表保持同步,但是有很多微妙的边缘情况,并且需要大量工作(和大量测试)才能正确处理所有细节。这是一个常见的场景,应该被纳入框架。(请?)

于 2009-07-02T13:26:28.620 回答
1

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

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

于 2009-09-18T17:37:21.833 回答
0

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

于 2009-06-13T18:25:20.820 回答