2012-04-05 81 views
1

enter code here我有獨立的存儲工作,但它只存儲一個項目。隔離存儲以存儲最近的列表,windows phone

我希望能夠存儲用戶在列表中使用的收藏夾列表。

目前,我可以存儲大量的停靠點,但是當我再次打開應用程序時,它只會記錄最後一個項目。並刪除剩下的部分。

private void ApplicationBarFavouriteButton_Click(object sender, EventArgs e) 

    { 
     IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; 
     // txtInput is a TextBox defined in XAML. 
     if (!settings.Contains("userData")) 
     { 
      settings.Add("userData", busStopName.Text); 
     } 
     else 
     { 
      settings["userData"] = busStopName.Text; 
     } 
     settings.Save(); 
     MessageBox.Show("Bus Stop was added to your favourites"); 
    } 

則顯示列表

if (IsolatedStorageSettings.ApplicationSettings.Contains("userData")) 
     { 
      listFav.Items.Add(IsolatedStorageSettings.ApplicationSettings["userData"] as string); 

     } 

編輯:

private void ApplicationBarFavouriteButton_Click(object sender, EventArgs e) 

    { 


     IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; 


    List<string> favourites = settings["favourites"] as List<string>; 

     if (favourites == null) 
     { 
      favourites = new List<string>(); 
      settings.Add("favourites", favourites); 
     } 

     favourites.Add(busStopName.Text); 

     settings["favourites"] = favourites; 
} 

顯示數據

if (IsolatedStorageSettings.ApplicationSettings.Contains("favourites")) 
     { 
      listFav.Items.Add(IsolatedStorageSettings.ApplicationSettings["favourites"] as List<string>); 
     } 

回答

3

您可以像訪問散列/字典一樣訪問您的設置。因此,如果您的商店信息爲settings["bob"],那麼當您下次存儲具有相同密鑰(「bob」)的東西時,將覆蓋settings["bob"]。在你的情況下,你使用的是「userData」這個關鍵字,每當你使用settings["userData"] = "something";時,你將覆蓋在設置中中存儲的內容。

您可以使用類似以下的(我已經改名爲你設置的「最愛」,使其更具描述性的它的內容):

List<string> favourites; 

settings.TryGetValue("favourites", out favourites); 

if (favourites == null) 
{ 
    favourites = new List<string>(); 
    settings.Add("favourites", favourites); 
} 

favourites.Add(busStopName.Text); 

settings["favourites"] = favourites; 

,並顯示它:

if (IsolatedStorageSettings.ApplicationSettings.Contains("userData")) 
{ 
    listFav.Items.AddRange(IsolatedStorageSettings.ApplicationSettings["favourites"] as List<string>); 
} 
+0

嗨,謝謝。 我得到以下信息 - KeyNotFoundException 當它擊中這條線 '名單最愛=設置[「收藏夾」]作爲列表;' – 2012-04-06 17:25:49

+0

我已經改變了該行使用TryGetValue()方法來代替。這將嘗試獲取該值而不會導致異常。希望這可以幫助。 – 2012-04-06 21:06:15

+0

謝謝,我補充說。但我現在正在「systems.collections.generic.list'1 [S ....」無法看到這一切。也只能保存一次。 不確定發生了什麼事。 – 2012-04-07 12:15:27

0

你可能需要存儲的字符串類型的泛型列表停下來然後閱讀這個列表f從ApplicationSettings rom,添加一個新的停止列表,然後將列表存儲回ApplicationSettings。