#list #windows-phone-7 #save #isolatedstorage
#Список #windows-phone-7 #Сохранить #isolatedstorage
Вопрос:
Как создать несколько списков текстовых данных и сохранить их в изолированном хранилище? Мне также нужно получить и отобразить другой сохраненный список.
Я создаю приложение, подобное списку напитков, в котором пользователь может создавать несколько списков напитков, содержащих множество разных видов напитков.
На данный момент я могу создать и сохранить только один список текста с напитком. Если бы я снова добавил текст о напитках в список и сохранил его, список был бы перезаписан последним другим текстом о напитках.
// Сохранить список текста с напитком
private void addListBtn_Click(object sender, RoutedEventArgs e)
{
IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();
storage.CreateDirectory("ListFolder");
StreamWriter writeFile = new StreamWriter(new IsolatedStorageFileStream("ListFolder\savedList.txt", FileMode.OpenOrCreate, storage));
for (int i = 0; i < (Application.Current as App).userDrinksList.Count; i )
{
String drink = (Application.Current as App).userDrinksList[i].ToString();
writeFile.WriteLine(drink.ToString());
}
writeFile.Close();
MessageBox.Show("List added into favourite list.");
}
// Отображение сохраненных списков
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();
StreamReader readFile = null;
{
readFile = new StreamReader(new IsolatedStorageFileStream("ListFolder\savedList.txt", FileMode.Open, storage));
listNumberListBox.Items.Add(readFile.ReadToEnd());
readFile.Close();
}
}
Ответ №1:
Вы сохраняете его как savedList.txt . Вам необходимо сохранить каждый список в виде отдельного файла. например list1.txt , list2.txt и т.д.
Возможно, вам также нужен список списков, чтобы вы знали, какой файл = какому списку.
Комментарии:
1. Есть ли какой-либо более простой способ сохранить несколько списков в изолированном хранилище? Как мне создать список списков, поскольку я действительно не знаю, сколько списков нужно пользователю. Нужен ли мне цикл for или что-то в этомроде? Спасибо!
2. Создайте класс с именем childList. У этого будет свойство List<String> для хранения списка напитков. Создайте класс под названием masterList. У этого будет свойство List<Дочерний список> для хранения списка списков. Сериализуйте основной список в изолированное хранилище.
Ответ №2:
Ваш метод addListBtn_Click предполагает, что он может найти список напитков в элементе userDrinksList вашего экземпляра приложения, однако ваш метод PhoneApplicationPage_Loaded не заполняет этот элемент.
В вашем методе PhoneApplicationPage_Loaded вы могли бы сделать:
using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication())
using(var stream = storage.OpenFile("ListFolder\savedList.txt", FileMode.Open))
using(StreamReader readFile = new StreamReader(stream))
{
for (string line = readFile.ReadLine(); line != null; line = readFile.ReadLine())
{
listNumberListBox.Items.Add(line);
((App) Application.Current).userDrinksList.Add(line)
}
}
«Использование» гарантирует, что ресурсы должным образом закрыты / утилизированы, поэтому вам не нужно явно закрывать. Вы читали полное содержимое — вам нужно прочитать его построчно.