【问题标题】:Isolated Storage to store recent lists, windows phone隔离存储来存储最近的列表,windows phone
【发布时间】:2012-04-05 12:51:15
【问题描述】:

enter code here我有隔离存储工作,但它只存储一个项目。

我希望能够存储收藏夹列表供用户在列表中使用。

目前,我可以存储大量停靠点,但是当我再次打开应用程序时,它只会记住最后一项。并删除其余部分。

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

【问题讨论】:

    标签: windows-phone-7 isolatedstorage


    【解决方案1】:

    您可以像访问哈希/字典一样访问您的设置。因此,如果您在settings["bob"] 中存储信息,那么当您下次使用相同的key(“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>);
    }
    

    【讨论】:

    • 您好,谢谢。我收到以下消息 - KeyNotFoundException 当它到达这一行时List&lt;string&gt; favourites = settings["favourites"] as List&lt;string&gt;;
    • 我已将该行更改为使用 TryGetValue() 方法。这将尝试获取该值而不会导致异常。希望这会有所帮助。
    • 谢谢,我已经添加了。但我现在得到“systems.collections.generic.list`1 [S ....”无法看到这一切。它也只保留一个保存它一次。不知道发生了什么。
    【解决方案2】:

    您可能需要存储一个停止类型字符串的通用列表,然后从 ApplicationSettings 中读取此列表,将新的停止添加到列表中,然后将列表存储回 ApplicationSettings。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多