首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows 8应用本地存储

Windows 8应用本地存储
EN

Stack Overflow用户
提问于 2013-04-18 05:08:46
回答 3查看 8.8K关注 0票数 3

我正在尝试使用C#开发Windows8应用程序,我需要在本地设置中存储两个列表(字符串和DateTime

代码语言:javascript
复制
List<string> names = new List<string>();
List<DateTime> dates = new List<DateTime>();

我根据这个页面使用了LocalSettings:http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh700361

代码语言:javascript
复制
Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;

但是我在存储列表和从保存的设置中取回列表时遇到了问题。

您可以发送几行代码来存储和检索string List和DateTime list类型的对象(或其他存储此类数据的方法)。

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2013-04-18 14:07:11

这里有一个名为Windows 8 Isolated storage的库,它使用XML序列化。您可以像存储List<T>一样存储object。使用起来也非常简单。只需在您的项目中添加DLL,您就有了存储数据的方法。

代码语言:javascript
复制
public class Account
{
   public string Name { get; set; }
   public string Surname{ get; set; }
   public int Age { get; set; }
}

保存在独立存储中:

代码语言:javascript
复制
Account obj = new Account{ Name = "Mario ", Surname = "Rossi", Age = 36 };
var storage = new Setting<Account>();          
storage.SaveAsync("data", obj); 

从独立存储加载:

代码语言:javascript
复制
public async void LoadData()
{    
    var storage = new Setting<Account>();
    Account obj = await storage.LoadAsync("data");    
}

另外,如果您想存储列表:将列表保存在独立存储中:

代码语言:javascript
复制
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 ); 

从独立存储加载列表:

代码语言:javascript
复制
public async void LoadData()
{    
    var storage = new Setting<List<Account>>();    
    List<Account> accountList = await storage.LoadAsync("data");    
}
票数 3
EN

Stack Overflow用户

发布于 2013-04-18 10:24:09

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

票数 1
EN

Stack Overflow用户

发布于 2013-04-18 05:15:09

试着这样存储:

代码语言:javascript
复制
localSettings.Values["names"] = names 
localSettings.Values["dates"] = dates

这是这样的:

代码语言:javascript
复制
dates = (List<DateTime>) localSettings.Values["dates"];

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16070308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档