我有些困惑,也许你可以帮助我 :)
我一直遵循CAG的指导,并发现MVP模式非常自然。假设我有一个准备好的UI Model(例如:实现INotifyPropertyChanged),我使用Presenter将这个Model绑定到视图上(presenter知道视图的接口),让我的Code-Behind尽可能小,只处理绑定(Model和Commands)属性(或方法)或对于没有ICommand的控件的事件,在这种情况下立即委托给Presenter。
不久后,我发现了MVVM模式,但至今仍然让我感到困惑。就我所知,在我的方法中,只有当我的Model不是UI-ready时,我才会使用MVVM。但保留Presenter并使用新的Model是否更合理?我不明白这样的使用方式会失去什么。我知道我错过了什么,但是是什么呢:).
此外,当您的View是通用的,可以处理许多种Models(例如,在PropertyGrid中)。推荐使用ViewModel与DataTemplate配合使用,但在这种情况下,您无法为Model中的每个实体创建模板,需要在运行时进行调查,您会推荐什么呢?
在观看Josh Smith在screencast中谈论MVVM时,我感到重新在ViewModel中暴露Model会违反DRY(不要重复自己)原则,这真的是不可避免的吗?令我惊讶的是,与ADO.Net Dynamic Data metadata classes最近引起争议相比,没有人对此进行辩论。
希望表述清楚
谢谢
Ariel