2013-02-10 26 views
0

我有一個兩頁的Windows 8應用程序。一個查看頁面和一個設置頁面。兩個頁面都使用相同的視圖模型。我可以在頁面之間傳遞視圖模型來處理它,但是我不能保存狀態,因爲我已經在頁面之間傳遞了一個複雜類型(它與它們如何保持引用並阻止您保存)。WinRT在頁面間傳遞ViewModel

所以我想我需要保存並重新加載我的視圖模型在每個頁面上?對於什麼是最佳做法,我找不到很好的參考。

回答

2

通常WinRT通過根框架,在App.cs.中初始化。最好在MainPage中定義一個Frame對象,然後瀏覽這個框架內的所有頁面。您的frame datacontext可以綁定到ViewModel。

+0

這就是答案。我將數據上下文設置爲頁面而不是靜態框架。然後我將它保存並加載到app.cs中,一切都很好。 – 2013-02-16 06:28:09

0

您可以使用Frame在頁面導航之間保存ViewModel狀態。我正在寫一個應用程序(針對不同頁面使用相同的viewmodel)有類似的情況,並且它完美地工作。它甚至會爲你緩存頁面。

I blogged最近關於使用Frame with ViewModels,但它更多的是設置框架交互而不是導航/緩存行爲。