Dan*_*ant 10 c# wpf model mvvm
我将继续努力克服MVVM模式,并且在尝试为小型/中型项目创建实用设计时,遇到了许多挑战.其中一个挑战是弄清楚如何在不创建大量重复,难以维护的代码的情况下获得与此模式解耦的好处.
我目前的策略是创建"丰富"的模型类.他们充分意识到它们将被MVVM模式消耗并实现INotifyPropertyChanged,允许观察它们的集合并且仍然认识到它们可能总是被观察.我的ViewModel类往往很薄,只在实际需要转换数据时暴露属性,其大部分代码是RelayCommand处理程序.视图可以直接绑定到ViewModel或Models,具体取决于是否需要进行任何数据转换.我使用AOP(通过Postsharp)来缓解INotifyPropertyChanged的痛苦,这样就可以很容易地以这种方式使我的所有Model类"丰富".
使用这种方法有明显的缺点吗?我可以假设ViewModel和View是如此紧密耦合,如果我需要View的新数据转换,我可以根据需要将其添加到ViewModel中吗?
我认为您的模型上的INotifyPropertyChanged仅在您期望VM同时操作VM和外部"强制"时才有用.
我个人是POCO模型的支持者.将任何特定于框架的脚手架放入我的模型中会让我担心.当您将一个事件放入模型类时,您必须仔细考虑模型的生命周期,序列化,存储等可能存在的问题.例如,如果从数据源重新创建对象会发生什么,而旧的INotifyPropertyChanged订阅现在无效?
同样更好的ObservableCollection位置在VM中,它可以使用IEnumerable数据源,并仅向视图显示选定或临时过滤的项目.
| 归档时间: |
|
| 查看次数: |
1459 次 |
| 最近记录: |