2013-04-17 45 views
3

我想用C#開發Windows 8應用程序,我需要存儲兩個名單的(字符串和日期時間)在本地設置Windows 8應用本地存儲

List<string> names = new List<string>(); 
List<DateTime> dates = new List<DateTime>(); 

我用的是LocalSettings根據這個頁面: http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh700361

Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; 

但我有問題,而我的存儲列表,並從保存的設置找回它們。

您可以通過發送幾行來存儲和檢索字符串List和DateTime列表類型對象(或其他一些方法來存儲此類數據)來提供幫助。

謝謝。

回答

0

試試這個存儲:

localSettings.Values["names"] = names 
localSettings.Values["dates"] = dates 

這個閱讀:

dates = (List<DateTime>) localSettings.Values["dates"]; 

編輯:它看起來像我錯了,你只能存儲基本類型的這種方式。所以你可能必須通過使用MemoryStream並保存其緩衝區來將所有內容序列化爲byte []。

+0

代碼似乎是正確的,但我試過了。應用程序啓動正確,但在運行時我收到此錯誤: 在mscorlib.dll中發生類型'System.Exception'的異常,但未在用戶代碼中處理 WinRT信息:嘗試序列化要寫入的值時出錯應用程序數據存儲 附加信息:不支持此類型的數據。 如果有這種異常的處理程序,程序可能會安全地繼續。 – cewrld

+1

我遇到同樣的問題。看起來問題是,當試圖持久DateTime,因爲在C#中它不是一個運行時類型(DateTimeOffset是)...似乎方法是將DateTime轉換爲DateTimeOffset ...必須有一個更優雅的解決方案。在WP8 IsolatedStorage工作正常 –

+0

var applicationData = Windows.Storage.ApplicationData。當前; var localSettings = applicationData.LocalSettings; –

3

下面是一個libarary稱爲Windows 8 Isolated storage,它使用XML序列化。您可以存儲object以及List<T>。用法也非常簡單。只需在您的項目中添加DLL並且您有存儲數據的方法。

public class Account 
{ 
    public string Name { get; set; } 
    public string Surname{ get; set; } 
    public int Age { get; set; } 
} 

保存在獨立存儲:從獨立存儲

Account obj = new Account{ Name = "Mario ", Surname = "Rossi", Age = 36 }; 
var storage = new Setting<Account>();   
storage.SaveAsync("data", obj); 

負載:

public async void LoadData() 
{  
    var storage = new Setting<Account>(); 
    Account obj = await storage.LoadAsync("data");  
} 

此外,如果你想存儲列表: 保存在獨立存儲列表:

List<Account> accountList = new List<Account>(); 
accountList.Add(new Account(){ Name = "Mario", Surname = "Rossi", Age = 36 }); 
accountList.Add(new Account(){ Name = "Marco", Surname = "Casagrande", Age = 24}); 
accountList.Add(new Account(){ Name = "Andrea", Surname = "Bianchi", Age = 43 }); 

var storage = new Setting<List<Account>>(); 
storage.SaveAsync("data", accountList); 

加載孤立存儲列表:

public async void LoadData() 
{  
    var storage = new Setting<List<Account>>();  
    List<Account> accountList = await storage.LoadAsync("data");  
} 
+0

此代碼中的設置是什麼? –

+0

它是圖書館的對象https://isolatedstoragew8.codeplex.com/ – Xyroid

相關問題