2012-11-23 148 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