2013-04-17 4 views
3

Я пытаюсь разработать 8 приложений Windows с помощью C# и мне нужно хранить два списка (в строку и DateTime) в локальных настройкахWindows 8 App Local Storage

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 и сохраняя только его буфер.

+0

Код кажется правильным, но я попробовал. Приложение запускается правильно, но во время выполнения я получаю эту ошибку: Исключение типа «System.Exception» произошло в mscorlib.dll, но не было обработано в коде пользователя Информация об WinRT: ошибка при попытке сериализации значения, которое должно быть записано в хранилище данных приложения Дополнительная информация: Данные этого типа не поддерживаются. Если есть обработчик для этого исключения, программа может быть безопасно продолжена. – cewrld

+1

У меня такая же проблема. Похоже, что проблема заключается в попытке сохранить DateTime, так как в C# это не тип времени выполнения (DateTimeOffset is ...) Кажется, что способ конвертировать 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