MVVM-使用简单的模型作为它';s自己的视图模型是一种不好的做法吗?

MVVM-使用简单的模型作为它';s自己的视图模型是一种不好的做法吗?,mvvm,dry,Mvvm,Dry,我猜我们有一个简单的模型,例如,让它成为一个人{Name,Age} 现在我们要显示一个人员列表 人是只读的 我们不需要编辑它们 我们不需要任何额外的东西,比如表示属性等 现在的问题是,如果不创建PersonViewModel类(该类可能是model类的副本或将委托其所有属性),这是否是一个好的做法?简单地将listbox绑定到人员列表,而不是他们的视图模型,这是一个好主意吗?它看起来很枯燥,但是MVVM的想法呢?我创建了独立的视图模型,但通常不是独立的模型。这是因为数据绑定——大多数POCO

我猜我们有一个简单的模型,例如,让它成为一个{Name,Age}

现在我们要显示一个人员列表

  • 人是只读的
  • 我们不需要编辑它们
  • 我们不需要任何额外的东西,比如表示属性等

现在的问题是,如果不创建PersonViewModel类(该类可能是model类的副本或将委托其所有属性),这是否是一个好的做法?简单地将listbox绑定到人员列表,而不是他们的视图模型,这是一个好主意吗?它看起来很枯燥,但是MVVM的想法呢?

我创建了独立的视图模型,但通常不是独立的模型。这是因为数据绑定——大多数POCO不实现INotifyPropertyChanged接口,将它们添加到其中使其成为伪模型似乎无法实现重用简单类和尊重MVVM模式的目的


现在,如果你知道你永远不会编辑它们,这可能不是一个坏主意。带有简单属性重定向的VM对我来说似乎有点毫无意义。

我不介意绕过VM,直接在视图中使用M。有时,模型太小且是静态的,因此将它们加载到包装虚拟机是浪费时间的。

就我而言,如果您实现INotifyPropertyChanged,那么它将成为一个ViewModel,您可以绑定到它。:)当我写全是MVVM的时候,我采取的方法是一切都是一个视图模型。唯一的模型对象是来自第三方库的类,这些类是我引入并包装在自己的ViewModel中的。

如果ViewModel没有引入新的必需功能,我不会为Person业务对象创建ViewModel

您可能对MVVM社区中的第二种方法感兴趣:为每个视图而不是每个业务对象创建ViewModel


可以在网站上找到采用这种方法的示例应用程序。

很抱歉,我没有编写模型是只读的,因此我们不需要INotifyPropertyChanged实现。[编辑的问题]但是,说到OP的问题,你为什么这样做?对于仅以只读方式显示的非常简单的模型对象,为什么要执行额外的步骤为其创建ViewModel?我不认为这是好是坏,只是OP试图找出为什么有人会这样做,或者为什么不这样做是坏的。@Anderson Imes:在不可变对象(只读)的特定情况下,没有理由实现INotifyPropertyChanged,所以绑定到它是好的。或者,如果你不希望它改变,我看不出有什么理由不绑定到它。最初,它听起来像你去了“所有”的viewmodel。。。这将是将所有模型对象完全重新定义为viewmodels,但您的说明似乎表明您是根据具体情况进行的。这更清楚了,谢谢。