2012-02-09 16 views
1

我對事件的註冊wonderings後(你可以在這裏找到ViewModel Event Registration and ViewModel Lifetime),現在我想視圖模型墓碑:序列化VM VS狀態類

在墓碑的情況下,是視圖模型序列化的好方法嗎? 我在考慮不同的視圖模型對同一個類有參考的情況。在Viewmodels序列化和反序列化的情況下,被引用的類實例可能有重複的實例,不是嗎?

如果有專門的狀態類,它們的唯一目的是包含所有應用程序數據,everyviewmodel從那裏獲取數據(我指的是數據的引用)並更新那裏的數據並且應用程序只想序列化那些專門的課程?

有關此主題的任何經驗值得讚賞。

問候 SkyG

回答

1

Caliburn Micro有很多的這個內置於framwork讓您保存視圖模型或整個圖形到兩個手機狀態和應用程序設置的屬性。您只需創建一個類並從StorageHandler繼承。

public class PivotPageModelStorage : StorageHandler<PivotPageViewModel> 
{ 
    public override void Configure() 
    { 
     this.ActiveItemIndex().InPhoneState().RestoreAfterViewLoad(); 
    } 
} 

而你的其他發佈的問題。 CM在手機上處理強制查看第一種方法是一種很好的方式。它允許您通過指定虛擬機進行頁面導航,並且它將處理剩下的內容。作爲獎勵,如果指定參數傳遞,CM將把它們從查詢字符串中提取出來並填充目標VM上的屬性。

public void GotoPageTwo() 
{ 
    navigationService.UriFor<PivotPageViewModel>().WithParam(x => x.NumberOfTabs, 5).Navigate(); 
} 
+0

我試過caliburn.micro一次,它是有前途的,我只發現它有點過於緊張。它可以用於製作,但對於製作項目我仍然沒有信心,我擔心在項目中出現一些驚喜,我現在更喜歡使用非常輕的工具包。可能值得看看StorageHandler如何工作以獲得一些好主意,所以謝謝! – SkyG 2012-02-09 17:44:20

+0

很明亮,這就是爲什麼它被稱爲Micro :)實際上,我相信作者正在研究你在說什麼。把事情分解成更小的部分,這樣你就可以使用你想要的東西。 – 2012-02-09 17:50:42