查看模型,模型实现INotifyPropertyChanged的位置

时间:2013-10-20 17:07:32

标签: c# wpf mvvm

这是How to use association class?中提到的问题的延续。现在的问题是

我有一个wpf UI,我使用MVVM模式来完成所有事情,其中​​

  1. 在第一页中我应该能够配置教师(添加/删除/更新)。教师类中的属性可能是名称和标识。

  2. 在第二页中,我应该可以配置学生并为学生选择一名教师。

  3. 在第三页中,我应该可以为学生配置主题。

  4. 在第四页中,我应该能够为每个学生及其主题配置学习合作伙伴。

  5. 因此,如果您看到第二页取决于第一页中完成的配置,因为教师信息基于第一页。

    第三页依赖于第二页,因为只有在第二页中创建学生列表后才在第三页中分配主题。(此处主题列表是静态的,无需配置。)

    第四页取决于第二页和第三页,因为学生信息已配置(因为学习伙伴是自己的学生),第二页,学生的主题信息在第三页配置。

    我的模型定义并将此Student,Teacher,Subject,StudyPartners信息返回给视图模型。所有这些类(业务对象)是否应该实现INotifyPropertyChanged接口?因为我认为UI特定的东西应该只在viewmodel中可用而不在模型中。如果需要处理更改通知的情况,我们是否需要为视图模型中的所有这些类创建一个包装器并实现此属性更改通知?如果我们这样做,如果业务对象的数量增加不会在视图模型中变得太多包装器?如何解决这个问题?我是否在设计层面犯了任何错误,或者是否应该在UI级别处理所有这些事情?

    感谢任何帮助,提前致谢。

1 个答案:

答案 0 :(得分:1)

我一直在模特身上实现它。

  • 使用数据库后端或文件系统后端时,我主要在较低级别上使用另一个模型。因此,视图上使用的模型仅用于显示数据。
  • INotifyPropertyChanged接口并不完全限于用户界面。你可以用它做很多事情。 WPF只是使用它,但您也可以在较低级别使用它,例如数据库或文件系统。

一段时间以前提出过类似的问题:In MVVM should the ViewModel or Model implement INotifyPropertyChanged?正如你所看到的,也有很多不同的意见。