到目前为止,我还没有看到在WPF中使用模型的价值.按照惯例,我的所有ViewModel都有一个关联的Model.这些模型中的每一个都是其各自ViewModel的虚拟克隆.ViewModel和Model类都实现INotifyPropertyChanged了,ViewModel只是将所有内容委托给Model.
那么为什么要打扰模特呢?为什么我不能只将模型逻辑移到ViewModel中并将其调用一天?
拥有MVVM 似乎相当冗余(即不是DRY),并且默认情况下只使用VVM,除非某些特殊边缘情况需要模型.
如果使用显式模型类更好地支持单元测试,例如,或者其他一些最佳实践,我可以看到值.
该模型只是低级应用程序数据。
\n\n视图模型更加具体。
\n\n这意味着模型和视图模型之间不存在 1:1 的关系。
\n\n因此,如果您只是显示低级数据,而不需要大量额外的逻辑、功能、摘要、聚合、过滤器等,那么您可以放弃视图模型,直接使用模型。您的项目似乎就是这种情况。
\n如果您将其视为一个抽象,那么假设您需要构建一个屏幕来显示员工列表并进行选择、搜索或过滤。然后我们将其分解为组件。您将需要:
Employee类(模型)EmployeeManagementViewModel并呈现您的员工列表并管理您的视图的状态更改(例如可以包含SelectedEmployee过滤搜索文本等)以供您使用EmployeeManagementViewEmployeeManagementViewModel)您很可能已经上课了Employee。如果是这种情况,那么您只需在您的员工中公开该模型EmployeeManagementViewModel即可ObservableCollection。
如果您还没有Employee 类,您可以决定创建一个 Employee 类EmployeeViewModel并在其中添加您的Employee属性FirstName,例如LastName、 等。
从技术上讲,这是可行的,但从概念上讲,它让我感到困扰,因为 anEmployeeViewModel 不是员工(它包含员工)。如果您要抽象现实,那么 Employee 的蓝图不应包含视图使用的属性或方法。对我来说,Employee 应该是一个可以实现的 POCO INotifyPropertyChanged,仅此而已。您将视图状态与模型本身分开。拥有 Employee POCO 可以更轻松地进行单元测试、创建模拟员工、通过 ORM 将其映射到数据库表等。
顾名思义,ViewModel 是视图的模型,模型是业务领域的模型
无论如何,我就是这么看的。当我开始做 MVVM 工作时,我也有同样的问题,但多年来似乎这是有道理的。
| 归档时间: |
|
| 查看次数: |
2110 次 |
| 最近记录: |