2013-06-26 66 views
2
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings; 
localSettings.Values["stupidcrap"] = "test1"; 

,然后重新启动Visual Studio中的应用程序后:赢8 localStorage的设置未保存

ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings; 
Debug.WriteLine(localSettings.Values["stupidcrap"]); 

不打印输出(这意味着该对象为null)。

为什么会发生这种情况?

当我这样做是这样的:

ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings; 
localSettings.Values["stupidcrap"] = "test1"; 
Debug.WriteLine(localSettings.Values["stupidcrap"]); 

它成功打印的,但储存的一点是,被保存的值是应用程序的重新启动后可用....

为什么是内存/存储/无论不保存我的价值?

回答

7

当你想添加一个值,你必须调用localSettings.Values.Add("key", "test1")

我使用下面的类作为设置助手:

public class StorageSettingsApplication 
{ 
    public StorageSettingsApplication() 
    { 
     try 
     { 
      localSettings = ApplicationData.Current.LocalSettings; 
     } 
     catch (Exception) 
     { 
     } 
    } 
    ApplicationDataContainer localSettings; 
    publicTValue TryGetValueWithDefault<TValue>(string key, TValue defaultvalue) 
    { 
     TValue value; 

     // If the key exists, retrieve the value. 
     if (localSettings.Values.ContainsKey(key)) 
     { 
      value = (TValue)localSettings.Values[key]; 
     } 
     // Otherwise, use the default value. 
     else 
     { 
      value = defaultvalue; 
     } 

     return value; 
    } 

    public bool AddOrUpdateValue(string key, object value) 
    { 
     bool valueChanged = false; 

     // If the key exists 
     //if (localSettings.Contains(Key)) 
     if (localSettings.Values.ContainsKey(key)) 
     { 
      // If the value has changed 
      if (localSettings.Values[key] != value) 
      { 
       // Store the new value 
       localSettings.Values[key] = value; 
       valueChanged = true; 
      } 
     } 
     // Otherwise create the key. 
     else 
     { 
      localSettings.Values.Add(key, value); 
      valueChanged = true; 
     } 

     return valueChanged; 
    } 

} 
+3

感谢的作品。 奇怪的是,在MSDN的教程中,它说通过localSettings.Values [“asd”] = value来使用它; –

+1

这确实很奇怪 –

+1

我在这个确切的问题上浪费了几个小时,并在MSDN网页上留下了反馈,要求他们用localSettings.Values.Add(key,value)行更新页面示例。 – timv