【发布时间】:2019-06-24 15:55:36
【问题描述】:
MVVM 架构的新手;我一直在查看this article,但我不确定哪些代码属于模型或视图模型。有人可以告诉我它是如何完成的吗?另外,每个模型都需要raisepropertychanged() 函数吗?
提前感谢您的回答!
【问题讨论】:
-
任何模型都不应该实现 INotifyPropertyChanged。模型应该是裸 POCO 类。 Viewmodels 必须实现 INotifyPropertyChanged。
-
如果项目足够简单,model/viewmodel可以一样。在您要绑定的任何东西上实施 INotifyPropertyChanged。
-
所以模型应该只声明 POCO 类。我正在阅读tutorialspoint.com/mvvm/mvvm_first_application.htm,它在模型中有一堆 INotifyPropertyChanged 的东西;是否应该在视图模型中实现,如何实现?谢谢!
-
@DanielLi 正确实现 INPC 是视图模型定义的一大块。 如果您有单独的模型和视图模型,该模型将不会实现 INPC。乍一看,那个教程点对我来说看起来很疯狂。 Student 模型只是简单的属性。 StudentViewModel 将代表相同的概念,一个学生,但它会有通知属性、命令、脏标志属性和其他供 UI 使用的东西:如果有 StudentVM.Courses 集合,StudentVM 可能有 SelectedCourse 属性.正如凯文所说,你可以完全不用模型
-
让 StudentViewModel 成为学生模型的集合,实际上是视图模型,这很奇怪。然后他在后面的代码中手动设置用户控件的 DataContext 属性,因为没有主视图模型。那家伙是在虚张声势说知道 MVVM。 The author of this blog has a much more solid understanding.
标签: c# wpf xaml mvvm data-structures