我正在创建具有DocumentViewModel类的小图形编辑器(继承自我的PaneViewModel类,该类继承自GalaSoft.MVVMLIGHT.ViewModelBase)。 DocumentViewModel代表一个图像(应用程序可以同时处理几个图像,所以我决定拥有DocumentViewModel的集合)。我想在保存项目时序列化DocumentViewModel并在加载项目时反序列化。但是我无法做到这一点,因为应用程序在序列化时抛出异常(“GalaSoft.MvvmLight.ViewModelBase未标记为可序列化)。是否有解决此问题的方法?使用序列化作为加载/保存机制是否正确?< / p>
答案 0 :(得分:2)
听起来你想要序列化应用程序状态。如果要使用MVVM Light执行此操作,请创建一个应用程序状态服务/对象,该服务/对象将注入到viewmodel中。使用它来管理您的应用程序状态(哪个视图模型处于活动状态等)。
让应用程序状态服务在检测到应用程序正在保存时自行保存。让它在启动时检查序列化对象,并使用它来重新加载应用程序状态当前设置。 Viewmodels使用它来确保状态是一致的。