使用WP8处理sideproject,但无法使IsolatedStorage正常工作。我看过几十个看似问同样问题的帖子,但我还没有能够得到任何解决方案。该应用程序是一个简单的任务组织器,我在其中创建了自己的任务对象,一个是摘要任务,每个SummaryTask包含一个BasicTasks列表。我曾尝试使用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; }
}
}
}
我在Global变量中创建了此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();
}
不再有例外,但退出应用并重新输入并不会提取任何已保存的数据。
答案 0 :(得分:0)
Add
的问题很容易修复 - 只需使用索引器,它允许您覆盖具有相同名称的条目:
settings["list"] = Global.list;
这不会修复Save
来电......但您需要提供更多有关异常(不仅仅是“告诉我”,完整异常详情)的详细信息,以帮助我们为您提供更多帮助