6

我發現在Windows 8應用程序中,導航回此頁面時總是會調用頁面的構造函數,但在Windows Phone 7應用程序中並非如此。當在Windows 8中導航時再次調用頁面構造函數C#應用程序

由於這種行爲,該頁面的所有屬性都會丟失,您需要以某種方式存儲它們並在頁面重新激活後重新指定它們。目前我正在使用SaveState方法來保存數據並重新分配LoadState方法中的數據。這兩種方法都內置在示例Grid/Split App中。

我想知道它爲什麼這樣設計,如果有更好的方法來維護頁面的實例?

+1

+1這樣調出來。它讓我措手不及。這是一個重大變化,意味着完全重新考慮你的狀態和虛擬機生命週期。 –

回答

5

您可以爲每個要保留在內存中的頁面設置Page.NavigationCacheMode = NavigationCacheMode.Required,但請注意,您必須確保用戶無法無休止地瀏覽這些頁面,因爲這會泄漏內存。

+0

謝謝!只是想知道爲什麼會有任何記憶問題?有沒有最佳做法? –

+0

那麼,如果你將頁面保存在內存中 - 一個頁面持有的任何內存將不會被釋放,直到你從後退和前進棧中移除頁面。如果你分配了大量的內存 - 你可以在OnNavigatedTo中完成並在OnNavigatedFrom中釋放它,但我想最好的辦法就是不加頁面實例緩存。 –

+0

謝謝,我會測試一下。 –

相關問題