2012-04-05 8 views
1

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

답변

3

해시/사전처럼 설정에 액세스 할 수 있습니다. 따라서 상점 정보가 settings["bob"] 인 경우 다음에 ("봅")과 함께 상품을 저장할 때 settings["bob"]을 덮어 쓰게됩니다. 귀하의 경우, "userData"키를 사용하고 있으며, settings["userData"] = "something";을 사용할 때마다 설정에 에 저장된 내용을 덮어 쓰게됩니다.

다음과 같은 (I가 "즐겨 찾기"그것의 더 자세한 설명 있도록이 내용의 당신의 설정의 이름을 변경) 사용할 수 있습니다 그것을 표시

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

안녕하세요. ' –

+0

내가 대신 TryGetValue() 메소드를 사용하는 그 라인을 변경했습니다, 그것은 '목록 즐겨 찾기 = 설정 목록 로 [ "즐겨 찾기"]이 줄을 칠 때 KeyNotFoundException - 나는 다음과 같은 메시지가 나타납니다. 이것은 예외를 발생시키지 않고 값을 얻으려고 시도합니다. 희망이 도움이됩니다. –

+0

고마워, 나는 그것을 추가했다. 하지만 지금은 "systems.collections.generic.list'1 [S ....]이 다 보이지 않습니다. 또한 한 번만 구원받은 사람을 한 번만 지키고 있습니다. 무슨 일인지 잘 모르겠습니다. –

0

당신은 아마의 문자열 형식의 일반적인 목록을 저장해야 이 목록을 중지 한 다음 읽습니다. f ApplicationSettings에서 List에 새 중지를 추가 한 다음 List를 ApplicationSettings에 다시 저장합니다.

관련 문제