假设我有一个访问SQL数据库的应用程序。该数据库有两个表:
我有一个这个数据库的内存模型。有两个类 - Animal
和Recipe
。它们继承自INotifyPropertyChanged
,并具有将1对1映射到数据库中的字段名称的属性。
要创建我的数据访问层,我还有两个类 - SqlAnimals
和SqlReceipes
。每个类都有Load
和Save
方法。 Load
遍历相关表以创建对象列表。 Save
使用对象列表来更新表。例如,SqlRecipes.Load
返回IList<Recipe>
,SqlRecipes.Save
接受IList<Recipe>
作为参数。
最后,我有一个名为RecipesView
的表单。这基于ViewModel - 另一个名为RecipesViewModel
的类。 RecipesViewModel
继承自INotifyPropertyChanged
并包含BindingList<Recipe>
属性。
现在我在这里有点困惑。在上面的例子中,我假设内存类和SQL类都被认为是MVVM的Model部分。但是,我是否认为内存模型可以被视为ViewModel部分?
最近我听说ViewModel应该只显示View将显示的数据。由于内存模型具有每个字段,因此它不是ViewModel?
答案 0 :(得分:1)
在MVVM中,ViewModel引用视图访问的模型。这不包括属于数据层的模型。
视图模型正在检索或设置其值的类(对象表示)被视为模型。只要您了解模型的角色,就可以在实现MVVM时区分它是Model还是ViewModel。此外,ViewModel通常依赖于平台,模型与平台无关。