3

我正在尝试使用 C# 开发 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 列表类型对象(或存储此类数据的其他方法)来提供帮助。

谢谢。

4

3 回答 3

3

这是一个名为Windows 8 隔离存储的库,它使用 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");    
}
于 2013-04-18T06:07:10.607 回答
1

请查看此示例,它演示了如何将集合保存到应用程序存储:http ://code.msdn.microsoft.com/windowsapps/CSWinStoreAppSaveCollection-bed5d6e6

于 2013-04-18T02:24:08.550 回答
0

试试这个来存储:

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

这要读:

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

编辑:看起来我错了,你只能以这种方式存储基本类型。因此,您可能必须使用 MemoryStream 将所有内容序列化为 byte[] 并仅保存其缓冲区。

于 2013-04-17T21:15:09.263 回答