2013-12-24 4 views
1

Я пытаюсь сохранить состояние списка на wp. Я использовал этот метод для надгробия содержимого текстового поля, и он работал отлично, но у меня возникают проблемы для списка строк:Углубление списка на Windows Phone 8

В принципе у меня есть список строк, называемых бета-версиями, и я должен нажать на кнопку, чтобы сгенерировать список. Поэтому я хотел бы, что если я закрыть или отключить мое приложение, а затем возобновить его в списке отображаются без нажатия кнопки

List<string> beta; 

    private void b_Click_1(object sender, RoutedEventArgs e) 
    { 
      List<string> beta = new List<string>{ 
       "string","string","string", 
       "string","string","string", 
       "string", }; 

      list.ItemsSource = beta; 
      phoneAppService.State["_List"] = beta; 
    } 

    private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e) 
    { 
      object myValue; 

      if(phoneAppService.State.TryGetValue("_List", out List<myValue)>){ 
       list.ItemsSource = myValue; 
      } 
    } 

но проблема возникает при:

phoneAppService.State.TryGetValue("MyValue", out List<myValue)> 

Хотя этот метод работает с одна строка не содержит список.

Какой метод следует использовать для списка строк?

EDIT:

Вот мои методы в моем классе App.xaml.cs, что я называю, когда приложение закрыто, деактивируется, запущен или открыт:

private void SaveState() { 
      PhoneApplicationService phoneAppService = PhoneApplicationService.Current; 

      IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; 

      settings["MyValue"] = phoneAppService.State["MyValue"]; 

      if(settings.Contains("_List")){ 
       settings["_List"] = phoneAppService.State["_List"]; 
      } 
     } 

     private void LoadState() { 
      PhoneApplicationService phoneAppService = PhoneApplicationService.Current; 

      IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; 

      string myValue = ""; 
      if(settings.TryGetValue<string>("MyValue", out myValue )){ 

       phoneAppService.State["MyValue"] = myValue; 
      } 

      List<string> myValues; 
      if (settings.TryGetValue<List<string>>("_List", out myValues)) 
      { 
       phoneAppService.State["_List"] = myValues as List<string>; 
      } 
     } 

Как я уже говорил ранее, этот метод работает для строки, которая правильно восстановлена ​​в текстовом поле, но не для списка строк

ответ

1

Похоже, что beta уже добавлено в List<string>, когда вы добавляете его в состояние. Когда вы его вытаскиваете, он должен быть уже List<string>, поэтому вам не нужно превращать его в List<myvalue> в вызове TryGetValue. Это должно выглядеть гораздо более простым, как:

private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e) 
{ 
    object myValue; 
    if(phoneAppService.State.TryGetValue("_List", out myValue)) 
    { 
     list.ItemsSource = myValue as List<string>; 
    } 
} 
+0

У меня есть эта ошибка сейчас:. «Невозможно преобразовать список » в «из объекта» " – user2505650

+0

@ user2505650 Я сделал небольшое изменение –

+0

Код компилируется, но список не восстанавливается, и я должен нажать кнопку, чтобы создать список, я только что редактировал сообщение, чтобы показать функции, которые я реализовал в своем классе app.xaml.cs – user2505650

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