0

使用 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();
    }

不再有例外,但退出应用程序并重新进入不会提取任何已保存的数据。

4

1 回答 1

0

问题Add很容易解决 - 只需使用索引器,它允许您覆盖具有相同名称的条目:

settings["list"] = Global.list;

这不会解决Save呼叫...但是您需要提供有关什么异常的更多详细信息(不仅仅是“它告诉我”,完整的异常详细信息),以帮助我们为您提供更多帮助。

于 2012-12-01T10:46:08.710 回答