2012-12-16 58 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)'之後。但是,對象屬性仍然無法保存。 –