【问题标题】:IsolatedStorage loses object attributes upon tombstoning独立存储在逻辑删除时丢失对象属性
【发布时间】:2012-12-16 05:46:12
【问题描述】:

我正在尝试编写一个非常简单的待办事项列表应用程序来尝试 WP8 编程,但是我在使用独立存储时遇到了一些问题。

背景:

  • 该应用目前仅支持一个待办事项列表
  • 列表项To-Do List是一个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());

    }


}

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


}
}

谢谢大家。

【问题讨论】:

    标签: c# windows-phone-8 isolatedstorage


    【解决方案1】:

    【讨论】:

    • 感谢您的建议 - 我尝试添加 'settings.Save();'就在'settings.Add(“myList”,toDoList1)'之后。但是,对象属性仍然无法保存。
    猜你喜欢
    • 2022-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    相关资源
    最近更新 更多