C# IsolatedStore在删除时丢失对象属性

C# IsolatedStore在删除时丢失对象属性,c#,windows-phone-8,isolatedstorage,C#,Windows Phone 8,Isolatedstorage,我试图编写一个非常简单的to-Do列表应用程序来尝试WP8编程,但在使用IsolatedStorage时遇到了一些问题 背景: 该应用程序目前只支持一个待办事项列表 列表项待办事项列表是ListItem类型的对象 我想做的是: 将ListItem对象保存到IsolatedStorage 当用户退出并 重新打开应用程序时,应用程序应从IsolatedStorage中检索用户的数据 现在,我能够在应用程序运行时检索到正确的数据。当用户退出应用程序并返回应用程序时,数据将全部消失。有人能帮我找

我试图编写一个非常简单的to-Do列表应用程序来尝试WP8编程,但在使用IsolatedStorage时遇到了一些问题

背景:

  • 该应用程序目前只支持一个待办事项列表
  • 列表项待办事项列表是ListItem类型的对象
我想做的是:

  • 将ListItem对象保存到IsolatedStorage
  • 当用户退出并 重新打开应用程序时,应用程序应从IsolatedStorage中检索用户的数据
现在,我能够在应用程序运行时检索到正确的数据。当用户退出应用程序并返回应用程序时,数据将全部消失。有人能帮我找出哪里出了问题吗

应用程序的主代码块:

public partial class MainPage : PhoneApplicationPage
{
    // Constructor

    ListItem toDoList1 = new ListItem();

    public MainPage()
    {
        InitializeComponent();

        ToDoList.ItemsSource = toDoList1.getObjList();

        var settings = IsolatedStorageSettings.ApplicationSettings;

        System.Diagnostics.Debug.WriteLine("Loading file... rows: {0}", settings.Count());

        if (settings.Contains("myList"))
        {
            ListItem check;
            settings.TryGetValue<ListItem>("myList", out check);
            System.Diagnostics.Debug.WriteLine("Retrieved number of rows at load: {0}.", check.countRows());

        }
        else
        {
            System.Diagnostics.Debug.WriteLine("File does not exist");

        }

    }

    private void add_Click(object sender, RoutedEventArgs e)
    {
        String myInput = input.Text;

        toDoList1.addItem(myInput);

        input.Text = "";

        save();
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        int selected = ToDoList.SelectedIndex;

        toDoList1.removeItem(selected);

        save();

    }

    public void save()
    {
        var settings = IsolatedStorageSettings.ApplicationSettings;
        settings.Remove("myList");
        settings.Add("myList", toDoList1);

        int rows = toDoList1.countRows();
        System.Diagnostics.Debug.WriteLine("Number of rows at save: {0}", rows);

        ListItem check;
        settings.TryGetValue<ListItem>("myList", out check);
        System.Diagnostics.Debug.WriteLine("Retrieved number of rows at save: {0}", check.countRows());

    }


}
public部分类主页:PhoneApplicationPage
{
//建造师
ListItem toDoList1=新ListItem();
公共主页()
{
初始化组件();
ToDoList.ItemsSource=ToDoList 1.getObjList();
var设置=隔离存储设置。应用设置;
System.Diagnostics.Debug.WriteLine(“加载文件…行:{0}”,settings.Count());
if(settings.Contains(“myList”))
{
列表项检查;
设置.TryGetValue(“myList”,检出);
System.Diagnostics.Debug.WriteLine(“加载时检索到的行数:{0}.”,check.countRows());
}
其他的
{
System.Diagnostics.Debug.WriteLine(“文件不存在”);
}
}
私有无效添加\单击(对象发送者,路由目标)
{
字符串myInput=input.Text;
toDoList1.addItem(myInput);
输入。Text=“”;
save();
}
私有无效按钮\u单击\u 1(对象发送者,路由目标)
{
int selected=ToDoList.SelectedIndex;
TODOLIST 1.删除项目(选定);
save();
}
公共作废保存()
{
var设置=隔离存储设置。应用设置;
设置。删除(“myList”);
设置。添加(“myList”,ToDoList 1);
int rows=toDoList1.countRows();
System.Diagnostics.Debug.WriteLine(“保存时的行数:{0}”,行);
列表项检查;
设置.TryGetValue(“myList”,检出);
System.Diagnostics.Debug.WriteLine(“保存时检索到的行数:{0}”,check.countRows());
}
}
ListItem类:

namespace PhoneApp6
{
public class ListItem
{

    private ObservableCollection<String> objList = new ObservableCollection<String>();

    public ObservableCollection<String> getObjList()
    {
        return objList;
    }

    public void setObjList(ObservableCollection<String> x)
    {
        objList = x;
    }

    public void addItem(String x)
    {
        objList.Add(x);

    }

    public void removeItem(int x)
    {
        objList.RemoveAt(x);
    }

    public int countRows()
    {
        return objList.Count();
    }


}
}
名称空间PhoneApp6
{
公共类列表项
{
私有ObservableCollection对象列表=新ObservableCollection();
公共可观测集合getObjList()
{
返回对象列表;
}
公共无效设置对象列表(可观察集合x)
{
objList=x;
}
公共无效附加项(字符串x)
{
对象列表添加(x);
}
公共无效删除项(int x)
{
对象列表移除(x);
}
公共整数countRows()
{
返回objList.Count();
}
}
}

谢谢大家。

调用该方法

谢谢你的建议-我尝试添加了“settings.Save();”就在“settings.Add”(“myList”,toDoList1)”之后。但是,对象属性仍然无法保存。