2012-11-23 146 views
1

我正在创建具有DocumentViewModel类的小型图形编辑器(继承自继承自GalaSoft.MVVMLIGHT.ViewModelBase的PaneViewModel类)。 DocumentViewModel表示一个图像(应用程序可以一次处理几张图像,所以我决定收集DocumentViewModel)。我想在保存项目时序列化DocumentViewModel,并在加载项目时反序列化。然而,我不能这样做,因为应用程序在序列化时抛出一个异常(“GalaSoft.MvvmLight.ViewModelBase没有标记为可序列化)。是否有解决此问题的方法?使用序列化作为加载/保存机制是否正确?MVVM Light - ViewModel Serialization

+0

为什么你需要序列化你的viewmodel? – syned

+0

因为它包含有关文档 - 空间区域(可写位图封装到一个类)的全部信息,标题,历史,图层和我想保存此文档(序列化到项目文件)和加载(反序列化)。 – fex

+4

MVVM代表模型 - 视图 - 视图模型您的数据在模型和视图模型中,模型和视图之间只有一层。你应该考虑什么是你的数据(Model)并且序列化和反序列化它。 – syned

回答

2

这听起来像是你想要序列化应用程序状态,如果你想用MVVM Light做到这一点,那么创建一个应用程序状态服务/对象,它被注入视图模型,用它来管理你的应用程序状态(哪个视图模型是活动的,等)

当你的应用程序检测到应用程序正在保存时,你的应用程序状态服务会自动保存,当它启动时检查一个序列化的对象,并使用它来重新加载应用程序状态当前设置ViewModels消耗这个以确保该状态是一致的。

+0

请链接任何示例链接? – VivekDev