使用 WP8 进行辅助项目,但无法让 IsolatedStorage 正常工作。我查看了数十篇看似在问同样问题的帖子,但我无法找到任何可行的解决方案。该应用程序是一个简单的任务管理器,我在其中创建了自己的任务对象,其中一个是摘要任务,每个摘要任务都包含一个基本任务列表。我尝试使用 XMLSerializing 只是为了遇到问题,因为我使用的是 ObservableCollection。以为我可以将集合更改为 INotifyPropertyChanged 的子类,但这也不起作用。坦率地说,无论如何,我仍然对两者之间的差异有所了解。所以无论如何,我最近的尝试涉及尝试使用独立存储设置,但这也不起作用。这是我的类定义:
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();
}
不再有例外,但退出应用程序并重新进入不会提取任何已保存的数据。