【问题标题】:MVVM Light - ViewModel SerializationMVVM Light - ViewModel 序列化
【发布时间】:2012-11-23 15:29:37
【问题描述】:

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

【问题讨论】:

  • 为什么需要序列化视图模型?
  • 因为它包含有关文档的全部信息 - 空间区域(包装到类中的可写位图)、标题、历史记录、图层,我想保存此文档(序列化为项目文件)并加载(反序列化) .
  • MVVM 代表模型 - 视图 - 视图模型,您的数据在哪里,模型和视图模型只是模型和视图之间的层。您应该考虑一下您的数据(模型)是什么并对其进行序列化和反序列化。
  • 在我的例子中,数据本身就是一个视图模型。所以我需要序列化它。有什么建议吗?

标签: c# serialization mvvm-light


【解决方案1】:

听起来您想序列化应用程序状态。如果您想使用 MVVM Light 执行此操作,则创建一个注入到视图模型中的应用程序状态服务/对象。使用它来管理您的应用程序状态(哪个视图模型处于活动状态等)。

让您的应用程序状态服务在检测到应用程序正在保存时自行保存。让它在启动时检查序列化对象并使用它来重新加载应用程序状态当前设置。 Viewmodels 使用它来确保状态是一致的。

【讨论】:

  • 请提供任何示例链接?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 2013-11-10
  • 2016-06-21
  • 1970-01-01
相关资源
最近更新 更多