2012-04-05 3 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); 

     } 

EDIT:

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"], вы перезапишете settings["bob"], когда вы будете в магазине что-то с тем же ключ («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 , когда она попадет эту строку 'Список избранных = Настройка [«избранные»] как список ;' –

+0

Я изменил эту строку, чтобы использовать метод TryGetValue() вместо этого. Это попытается получить значение без возникновения исключения. Надеюсь это поможет. –

+0

Спасибо, я добавил. Но теперь я получаю «systems.collections.generic.list'1 [S ....», он не видит все. также он сохраняет только один из сохраненных. Не уверен, что происходит. –

0

Вы, вероятно, нужно сохранить общий список типа строки Останавливает, а затем читает этот список f введите ApplicationSettings, добавьте новую остановку в Список и затем сохраните Список обратно в ApplicationSettings.

Смежные вопросы