隔离存储以存储最近的列表,Windows Phone

时间:2012-04-05 12:51:15

标签: windows-phone-7 isolatedstorage

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

2 个答案:

答案 0 :(得分: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>);
}

答案 1 :(得分:0)

您可能需要存储Stops类型字符串的通用List,然后从ApplicationSettings中读取此List,向List添加一个新的stop,然后将List存储回ApplicationSettings。