2011-10-20 373 views
0

嗯,這是我的第一個問題,就我搜索而言,我沒有找到解決方案。我正在編寫我的WP7的第一個rssreader應用程序,我面臨着頁面狀態的問題。我有3頁,導航如下: mainpage >>> listitemspage >>> detailspage。 Mainpage是一個預先配置的feed類別項目(url和name)的數據綁定模型,listitempage是一個頁面,我在其中實現了一個webclient來閱讀feed項目,detailspage是我從listitempage中傳遞所選feed項目的細節的地方。在這些情況下,頁面的狀態工作:在WP7的3頁應用程序中保存頁面狀態

mainpage >>> start button >>> back button (OK)<br/> 
listitempage >>> start button >>> back button (Doesn't work)<br/> 
detailspage >>> start button >>> back button (OK)<br/> 

在detailspage我保存使用的OnNavigatedTo /從和State.TryGetValue 這似乎是工作,但如果我創建了一個按鈕,瀏覽器的任務,使用戶可以瀏覽網頁狀態當瀏覽器打開並且用戶按下返回按鈕時,詳細頁面狀態起作用。如果用戶第二次按下後退按鈕,則該應用正在退出,而不是導航回到listitempage。所以我也有這個問題:

detailspage >>> browserbuttontask >>> backbutton >>> restorepage >>> backbutton->exit<br/> 

任何想法?

回答

0

我建議在Matt Lacey(Windows Phone用戶組的)編寫的codeplex上使用Tombstone幫助程序。

http://tombstonehelper.codeplex.com/

它要麼解決你所有的問題,很容易或者至少是告訴你如何寫你的頁面狀態關閉到長期使用(記住狀態高速緩存器僅在設備是生存的獨立存儲供電,只要手機沒有需要清除它的內存)

希望如果你想保存頁面狀態,而不與IsolatedStorage搞亂嘗試SterlingDB這有助於 RGDS 西蒙

+0

感謝您對Darkside的回覆。我已經使用這個沒有結果。不幸的是,墓碑助手甚至沒有正確保存詳細信息頁面狀態。我用來保存當前頁面狀態的細節頁面的方法是完美的(除了瀏覽器任務的問題),但我也想爲listitemspage類似的東西,我已經用完了想法。我想用頁面狀態來做,而不用弄髒孤立存儲。如果這是可能的。 – user1004994

0

。它使用IsolatedStorage,但它的設置和使用非常簡單。您可以通過nuget添加英鎊。你將不得不堅持你想在課堂上堅持的數據,但保存和加載很簡單。

除此之外,你也可能想看看Caliburn Micro。它將頁面生命週期添加到ViewModel,如OnInitialize,OnActivate,OnDeactivate。它還爲WP7增加了一些不錯的東西,比如將ViewModel上的屬性自動持久化爲IsolatedStorage或電話狀態。

http://www.sterlingdatabase.com/

+0

謝謝Derek的建議。雖然他們看起來太難以執行它們(我還是一個begginer)。現在我們來關注如何從listitemspage中恢復數據。我試圖實現OnNavigatedTo/From和State。TryGetValue在那個頁面上,但我想,當OnNavigateTo被調用時,頁面不會重載,以便運行webclient事件來獲取項目。有沒有辦法像這樣做? – user1004994

+0

因此,當你點擊瀏覽器時,應用程序後退堆棧已被清除。它返回到您的詳細信息頁面的原因是因爲它在瀏覽器中。那時你需要一些邏輯來確定你從哪裏來,以及它應該在另一個後退按鈕上的位置。查看http://buildmobile.com/windows-phone-7-navigation/瞭解如何訂閱OnBackKeyPress事件。 –

0

這聽起來像還原狀態到您的列表頁面,其中有終止應用的效果時,你的應用程序拋出異常。

您是否嘗試過使用附加的調試器來完成所有這些工作?它應該告訴你什麼異常正在拋出和在哪裏。

+0

我用新的芒果SDK更新了我的代碼,現在狀態處理工作正常。謝謝你們的回覆! – user1004994