当我进一步深入研究MVVM和MVVM-light时,我认识到,没有MVVM-light为模型提供基类。
但根据我的理解,消息传递和提出通知也可能发生在模型中。至少在模型之间的沟通中,我会发现消息传递非常方便。
所以我决定从ViewModelBase派生我的模型,即使某些属性(如设计时间属性)将不被使用。
但是我越看这个,我就越想错过什么。从ViewModelBase派生我的模型被认为是“不好的做法”吗?
使用Messaging进行模型通信是否可以?
答案 0 :(得分:9)
从您喜欢的任何内容中派生您的视图模型类...... MVVM-light提供了VieWModelBase来提供ICleanUp的实现 - 这对于管理ViewModel对象的生命周期非常有用。我自己的选择是在基类中实现属性更改通知的所有脚手架,然后从模型类派生。关于模型类的唯一强有力的建议是:
非常好的ViewModel类通常也是无状态的,它们可以在单个用户交互中循环/重用,这样可以虚拟化大型数据列表(WPF支持虚拟化)以节省RAM。
记住DRY(不要重复自己),KISS(保持简单,愚蠢!)和YAGNI(你不需要它) - 你应该记住的原则上面任何学术设计原则。我真的浪费了几周的WPF应用程序来实现学术上完美的MVC / MVVM模式,却发现它们已经从最终解决方案的整体可理解性中消失了。所以...保持简单! :)
答案 1 :(得分:2)
我会看一下Composite Application Library中的EventAggregator
。 this帖子中的答案对其有很好的描述。杰里米·米勒的post详细介绍了一下。