2012-05-08 33 views
4

我讀通過的Windows Phone 7.5如虎添翼,並有大量的代碼看起來像這樣(在代碼隱藏頁):應該瞬態總是當一個頁面導航到從墓碑狀態剛剛恢復時加載,還是?

bool loaded; 

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    if (!loaded) 
    { 
     DataContext = new SomePageViewModel(State); 
     loaded = true; 
    } 

    ((SomePageViewModel)DataContext).LoadTransientState(); 

    ... 
} 

... 

的想法是,loaded會是假的時從墓碑狀態恢復,所以我們知道我們要重建視圖模型。

我的問題是:爲什麼加載if塊之外的過渡狀態?如果我們的內存沒有被扔掉(即應用程序沒有被墓碑化),我們不能不重新使用舊的視圖模型而不重新加載它的狀態嗎?

瞬態應該從墓碑狀態只是恢復時,當一個頁面導航到狀態總是被加載,還是?

回答

1

我不熟悉的書和從你所示的代碼很難說,如果這是正確與否。這涉及到什麼LoadTransientState實際上。

想要處理邏輯刪除的方法是確保(只要它在應用程序*中有意義),應用程序/頁面在用戶返回時應該處於與離開時相同的狀態。

因此,如果LoadTransientState只關注在墓碑化時信息的持久性,那麼在if塊內移動它可能是適當的。
如果有臨時數據的一些其他形式則可能不會涉及。

希望LoadTransientState將包含一些邏輯,以確保它沒有設置(或重置)內部已經存在(或已經設置)的數據,因此將避免任何不必要的被調用的預期後果。

*一些明顯的例外是實時數據,定時器(可能),實時信息等。

相關問題