我正在研究基于MVVM模式的WPF应用程序 .
对于特定实体,我有一个包含实体属性的Model,一个实现INotifyPropertyChanged的ViewModel,它有一些额外的逻辑,以及公开Model的属性和两个Views,一个用于创建,一个用于编辑实体 .
我为编辑创建了一个ViewModel并创建了Views,并在编辑时传递了实体的id,以便可以检索现有数据 .
我无法解决的是如何在这种情况下构建ViewModel,即:
-
我是否应该将EntityViewModel作为EditEntityViewModel的属性,其中EntityViewModel公开Model的属性,EditEntityViewModel处理命令和其他逻辑?如果我这样做,那么我认为EntityViewModel不会被通知视图中的更改 .
-
我应该有两个独立的ViewModel吗?
-
我是否应该为页面提供单个ViewModel,以暴露模型的属性以及处理命令和其他逻辑?
-
别的什么?
我知道每个视图应该有一个ViewModel,但我不完全确定如何定义单独的视图 . 你可能会说我对如何实现框架有点困惑 .
非常感谢任何帮助 .
1 回答
不要过度复杂化 . 尝试将视图模型保持为模型关系1:1 . 因此,您的视图模型将公开方法以支持模型上的所有CRUD方法 . 另外,考虑使用一个视图,而不是两个视图 . 他们之间有很多重叠,所以我认为这是有道理的 . 您将编写和维护的类更少 . 我认为使用单一视图方法列表中的#3是您的最佳选择 .