2011-04-21 58 views
0

我寫了一個簡單的wp7應用程序。我正在使用wcf服務與數據庫進行交互。現在我想將用戶信息的一部分存儲在移動設備中。這個信息需要通過wp7應用程序訪問。如何管理wp7中xml文件中的數據?

我發現了多種方式來做到這一點,如:獨立存儲資源文件或靜態數據在App.xaml中

哪一個會更適合?因爲我可能希望在將來編輯數據...我可能不會選擇打包的文件,因爲它們是隻讀的。也不希望通過存儲在獨立存儲中而丟失數據。

請建議最合適的選擇,我提前

賓度

回答

1

感謝這聽起來像你想存儲的應用程序的使用之間下載的數據。在這種情況下,隔離存儲可能是您最好的選擇。它將保留在手機的非易失性存儲器中,您不會失去它。因爲你希望能夠在以後的日子要改變這些項目,因爲這些將是隻讀

詳細here

+0

嘿,謝謝你的回答,但是我讀過的一個地方是,當我們將一些數據存儲到移動設備的隔離存儲器中時,每次啓動模擬器時,它都會被破壞或重新寫入文件中!這是真的嗎?此外,我想將用戶輸入的數據存儲到我作爲應用程序的一部分創建的表單中。 – Bindu 2011-04-25 04:49:17

+1

每次關閉仿真器時都會重新啓動隔離的存儲器,即清零,但這種情況在手機上不會發生。這是在應用程序未運行時將數據存儲在手機上的唯一方法。 – 2011-04-25 09:33:27

0

資源文件和靜態數據在App.xaml中不會爲你工作。

當您通過存儲在IsolatedStorage中說「丟失數據」時,我不知道您指的是什麼。這是你最好的選擇,而且其實很容易。這裏是保存一個簡單的布爾的一個例子:

private void SaveSettings() 
{ 
    IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; 
    settings["VibrationOn"] = VibrationOn; 
} 

然後以後加載:

private void LoadSettings() 
{ 
    IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; 
    bool vo; 
    if (settings.TryGetValue<bool>("VibrationOn", out vo)) 
     VibrationOn = vo; 
    else 
     VibrationOn = true; 
} 

你會打電話給你LoadSettings()方法在Application_LaunchingApplication_Activated事件,然後你SaveSettings()Application_Deactivated和您的App.xaml.cs中的Application_Closing事件。

您還可以序列化對象或寫入整個文件。

+0

你好,謝謝你的回答。某處我已經讀過隔離的存儲文件將被存儲在應用程序的標題中,並且每次啓動模擬器時,該文件都將被重寫。所以我提到「使用獨立存儲丟失數據」。 iwsh知道這是多遠和任何手段,以避免這種情況 – Bindu 2011-04-25 05:52:23

+0

@Bindu請參閱評論@SteveChadbourne。只有在模擬器上才能清除隔離存儲,並且只有在關閉它時纔是真實的(不只是重新運行應用程序)。在手機上,只有當您執行此操作或您的應用程序被卸載後,您的數據纔會被刪除。至於每次應用程序啓動時重寫文件,這取決於您的代碼。您需要在寫入之前驗證文件不存在,否則,您會覆蓋它。 – theChrisKent 2011-04-25 12:47:59