2014-02-22 4 views
-1

Как я могу сохранить элементы списка, даже если я перезапущу приложение в приложении Windows Phone. Я хочу, чтобы они как-то были сохранены в файле, а затем прочитали их при следующем запуске приложения. Пожалуйста, помогите .. Ok я обновление с кодом:Как я могу сохранить элементы списка, даже если я перезапущу приложение?

общественный частичный класс MainPage: PhoneApplicationPage { #region ОбъявлениеПеременной

DispatcherTimer timer = new DispatcherTimer(); 
    WebClient client = new WebClient(); 
    WebBrowserTask Facebook = new WebBrowserTask(); 
    WebBrowserTask YouTube = new WebBrowserTask(); 
    WebBrowserTask Odnoklassniki = new WebBrowserTask(); 
    WebBrowserTask Vkontakte = new WebBrowserTask(); 
    List<ItemFormat> Items = new List<ItemFormat>(); 
    DispatcherTimer PopulateIsoFile = new DispatcherTimer(); 
    string SongBuffer; 
    int c = 1; 
    string Time; 

    #endregion 

    #region AppInit 
    // Constructor 
    public MainPage() 
    { 
     InitializeComponent(); 
     if (Microsoft.Phone.Net.NetworkInformation.DeviceNetworkInformation.IsNetworkAvailable == false) 
     { 
      MessageBox.Show("No internet connection", "Error", MessageBoxButton.OKCancel); 
     } 
     else 
     { 
      if (BackgroundAudioPlayer.Instance.PlayerState == PlayState.Playing) 
      { 
       PauseBtn.Visibility = Visibility.Visible; 
       PlayBtn.Visibility = Visibility.Collapsed; 
      } 
      else 
      { 
       BackgroundAudioPlayer.Instance.Track = new AudioTrack(new Uri("http://air-online2.hitfm.md/hitfm.mp3"), "HITFM", "Включи себя", null, null); 
       PlayBtn.Visibility = Visibility.Visible; 
       PauseBtn.Visibility = Visibility.Collapsed; 
      } 
      BackgroundAudioPlayer.Instance.PlayStateChanged += Instance_PlayStateChanged; 
      SlideView.Begin(); 
      SlideView.Completed += SlideView_Completed; 
      SlideView.AutoReverse = true; 
     } 
     timer.Interval = TimeSpan.FromSeconds(30); 
     timer.Tick += timer_Tick; 
     timer.Start(); 
     Loaded += timer_Tick; 
    } 

#region DownloadTrackInfo

void timer_Tick(object sender, EventArgs e) 
    { 

     try 
     { 
      client.Encoding = System.Text.Encoding.UTF8; 
      client.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.Now.ToString(); 
      client.DownloadStringAsync(new Uri("http://air-online2.hitfm.md/status_hitfm.xsl")); 
      client.DownloadStringCompleted += client_DownloadStringCompleted; 
     } 
     catch (System.Net.WebException) 
     { 
     } 
    } 

    void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 
     try 
     { 
      string[] raw = e.Result.Substring(166).Split('-'); 
      if (raw[0].Contains(":")) 
      { 
       Artist.Text = raw[0].Replace(":", string.Empty).Substring(0, raw[0].Length - 1); 
       Title.Text = raw[1].Substring(1); 
      } 
      else 
      { 
       Artist.Text = raw[0]; 
       Title.Text = raw[1].Substring(1); 
      } 
      TitleProgress.Visibility = Visibility.Collapsed; 
      Title.Foreground = new SolidColorBrush(Colors.White); 
      Artist.Foreground = new SolidColorBrush(Colors.White); 
      if (DateTime.Now.Minute < 10) 
      { 
       Time = "0" + DateTime.Now.Minute.ToString(); 
      } 
      else 
      { 
       Time = DateTime.Now.Minute.ToString(); 
      } 
      ItemFormat Item = new ItemFormat(e.Result.Substring(166).Replace(":", string.Empty), c, DateTime.Now.Hour.ToString() + ":" + Time); 
      if ((!(Item.Song == SongBuffer)) || (Recent.Items.Count == 0)) 
      { 
       Recent.Items.Add(Item); 
       SongBuffer = Item.Song; 
       c += 1; 
      } 
     } 
     catch (System.SystemException) 
     { 

     } 
    }  

}

public class ItemFormat 
{ 
    public string Song { get; set; } 
    public int Count { get; set; } 
    public string Time { get; set; } 
    public ItemFormat(string Song, int count, string time) 
    { 
     this.Song = Song; 
     this.Count = count; 
     this.Time = time; 
    } 
} 

}

Я использую этот список для своего рода плейлиста для радио. Но мне нужно, чтобы мои объекты сохранялись, даже когда пользователь нажимает кнопку «Назад» или находится под блокировкой экрана. Пожалуйста, помогите мне спасти мои дорогие вещи.

+0

Эти элементы, которые используются для заполнения «ListBox», в первую очередь, откуда они взялись? –

+0

Я обновил код. – aodpi

+0

Мне не нужно видеть весь код, который слишком много для меня, чтобы читать сегодня, как и для всех остальных. Просто вставьте соответствующую часть - откуда вы получаете свои данные. –

ответ

0

Есть несколько способов хранения данных между «сессий»:

  • Использование файлов в IsolatedStorage сериализовать в/десериализации с.
  • Использование IsolatedStorageSettings с той же целью, но с меньшим объемом данных.
  • Использование базы данных, либо SQL CE или SQLite

Я предлагаю вам использовать первый метод, потому что это самый простой, и вы получите наименьшие ошибки с ним. Просто сериализуйте данные в файл всякий раз, когда вам нужно, либо при закрытии приложения, либо при его изменении. Затем вы загружаете данные при запуске из файла (если он существует) и заполняете исходный список.

+0

Можете ли вы показать несколько примеров? потому что я пробовал первый метод, но не добился успеха. Я удалил коды :( – aodpi

+0

Привет, мистер Тони? – aodpi

+0

http://msdn.microsoft.com/en-us/library/hh821020.aspx –

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

  • Нет связанных вопросов^_^