【发布时间】:2014-02-12 02:51:37
【问题描述】:
我试图理解过去两周的MVVM,但仍然对理解它有很多困惑。
我最近开始了 Windows Phone 8 的开发。
我对MVVM的理解,
M = Model 表示数据,具体的意思是Model 应该被视为C 语言的struct。它只会有属性或成员变量(对象)。它对 View 和 View Model 一无所知。
V = 普通 XAML。应该只有一种绑定方式,那就是使用DataContext。
VM = View Model 是视图模型。 VM 使用 M 来保存其数据(使用 Containership),VM 负责将数据保存在 DB 中或从 db 中获取数据。 DB 交互应该发生在 VM 中。 VM 应该实现INotifyPropertyChanged,因为它负责保存和获取数据。
请建议我对 MVVM 有错误的概念。
【问题讨论】:
-
DB interactions should happen in VM我通常更喜欢将这种逻辑放在服务层中,这至少有两个好处:逻辑可以在所有虚拟机之间共享,并且可以让虚拟机集中注意力担任数据翻译角色。 -
否则,我看不出您对 MVVM 的描述有什么问题。你能准确地说出让你感到困惑的地方吗?还要记住,对 MVVM 的不同解释与应用程序一样多。这就是为什么它被称为 pattern
-
@KooKiz 我的困惑是,1. 'modle' 是否应该被视为结构(概念上),2. VM 是否应该只实现 'INotifyPropertyChanged'
-
最纯粹的可能是在Vm中只有INotifyPropertyChanged,在模型中实现它虽然可以节省很多代码。而且它不是特定于视图的,所以在模型中实现它是好的。
-
我完全同意@Johan Larsson,
INotifyPropertyChanged必须在模型中,ViewModel 可以实现任何不违反 MVVM 原则的接口。在VM中最好留下IDataErrorInfo实现接口等。然而,你对 MVVM 的看法很好,我没有注意到缺陷。
标签: wpf xaml mvvm windows-phone-8 inotifypropertychanged