Работаю над побочным проектом с WP8, но возникли проблемы с запуском IsolatedStorage. Я просмотрел десятки сообщений, казалось бы, задающих один и тот же вопрос, но мне не удалось заставить работать какое-либо из решений. Приложение представляет собой простой органайзер задач, в котором я создал свои собственные объекты задач, одна из которых является сводной задачей, а каждая сводная задача содержит список базовых задач. Я пытался использовать XMLSerializing только для того, чтобы столкнуться с проблемами, потому что я использовал ObservableCollection. Думал, что могу изменить коллекцию на подкласс INotifyPropertyChanged, но это тоже не сработало. Откровенно говоря, я все равно еще не разобрался в различиях между ними. Так или иначе, моя последняя попытка связана с попыткой использовать параметры IsolatedStorage, и это тоже не сработало. Вот мое определение класса:
class SummaryTask : TaskItem
{
public List<BasicTask> children = new List<BasicTask>();
private string sumTaskName;
private int sumTaskId;
public SummaryTask()
{
}
public SummaryTask(string name, int id)
{
sumTaskName = name;
sumTaskId = id;
}
public string SumTaskName
{
get { return sumTaskName; }
set { sumTaskName = value; }
}
public int SumTaskId
{
get { return sumTaskId; }
set { sumTaskId = value; }
}
public void addTask(string taskName, string taskText, int taskId){
children.Add(new BasicTask(taskName, taskText, taskId));
}
public List<BasicTask> CHILDREN
{
get { return children; }
}
}
}
Я создаю список этого SummaryTask в глобальной переменной и использую его на своих страницах для легкого доступа. Вот как выглядит начало моего файла MainPage.xaml.cs ОБНОВЛЕНО:
public MainPage()
{
InitializeComponent();
BackKeyPress += OnBackKeyPressed;
if (Global.settings.Contains("list"))
{
Global.list = (List<SummaryTask>)Global.settings["list"];
}
else
{
Global.list = new List<SummaryTask>();
}
}
Также принимаются рекомендации о низком качестве моего кода и о том, как его улучшить. Спасибо.
Изменить: исключение указывает на то, что элемент с таким же ключом уже создан. В этом случае трассировка стека не показывает ничего важного. Я также должен отметить, что исключение выдается после добавления объекта в список и попытки его сохранения, а не во время компиляции.
Фрагмент кода, который я использую, чтобы попытаться сохранить в изолированном хранилище, находится здесь, он срабатывает, когда я перехожу к MainPage.xaml:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
resultList.SelectedItem = null;
Global.settings["list"] = Global.list;
Global.settings.Save();
}
Больше никаких исключений, но выход из приложения и повторный вход не извлекают сохраненные данные.