2012-04-05 61 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。