2011-09-11 87 views
2

我在WP7中有一個包含一些文本框的頁面。當按下返回鍵此方法運行保存的內容:退出WP7運行方法

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e) 
    { 
     var settings = IsolatedStorageSettings.ApplicationSettings; 

     settings["remZone"] = txtBoxZone.Text; 
     settings["remSpace"] = txtBoxSpace.Text; 
    } 

的問題是一些用戶不按後退按鈕,但會按home鍵退出應用程序,所以內容不被保存。

我認爲如果可能的話,有兩個途徑: 1.是否有一個函數會在按下home按鈕時運行此方法,如onBackKeyPress。 2.當用戶輸入文本框時,是否有簡單的方法來保存文本框的內容?

謝謝。

編輯:

溶液是這樣的:

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) 
    { 
     var settings = IsolatedStorageSettings.ApplicationSettings; 

     settings["remZone"] = txtBoxZone.Text; 
     settings["remSpace"] = txtBoxSpace.Text; 
    } 

回答

5

最簡單的解決方案,您的問題將覆蓋Page.OnNavigatingFrom方法。

more here

+0

謝謝,這就是我正在尋找的東西! –

-1

有在遊戲的方法,其可以被重寫稱爲OnExiting

只是重寫它,並希望你想在它。

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.onexiting.aspx

編輯:我只是意識到你可能使用Silverlight。在這種情況下,this could也許符合您的需求

+0

嗨,謝謝你的回答,並且是基於silverlight的。你有沒有嘗試過的替代解決方案,因爲我不知道在Windows Phone中存在ExitEventArgs? –

1

Backpress是不是您收到的唯一的事件,也有一個App.Deactivated事件,這是保證只要你的應用程序以任何方式熄滅屏幕被調用。

在您的Page(無論是.ctor還是Loaded事件處理程序)中,將處理程序附加到該事件,並在該處理程序中收集您在關閉時必須存儲的所有內容。這是確保它不會蒸發的最簡單的方法。只記得取消鏈接該處理器在Page.Unloaded上,否則你將大大泄漏內存/資源!

順便說一句。代碼

var settings = IsolatedStorageSettings.ApplicationSettings; 

settings["remZone"] = txtBoxZone.Text; 
settings["remSpace"] = txtBoxSpace.Text; 

在某些情況下是不夠的。如果你真的需要,以確保您的設置依然存在,您必須手動更改後調用保存():

var settings = IsolatedStorageSettings.ApplicationSettings; 

settings["remZone"] = txtBoxZone.Text; 
settings["remSpace"] = txtBoxSpace.Text; 

settings.Save(); // think about it, you may want it! 

這是因爲設置保存在一些特定的場合,例如,應用程序退出,墓碑等。我不記得他們在停用時會被保存,所以只要按下後退可能不會將它們保存到ISO。更重要的是,如果您設置了應用程序並且應用程序崩潰 - 例如由於未處理的異常 - 或者電池/電源關閉,或者用戶簡單地關閉了電話 - 它們將不會被存儲!