2012-12-16 38 views
1

我试图编写一个非常简单的待办事项列表应用程序来尝试WP8编程,但是我在IsolatedStorage方面遇到了一些麻烦。IsolatedStorage在逻辑删除时丢失对象属性

背景:

  • 该应用程序只支持一个待办事项列表现在
  • 列表itemThe待办事项列表的类型列表项

我试图做的一个目的:

  • 将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()); 

    } 


} 

列表项类别:

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


} 
} 

感谢所有。

回答

0
+0

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