Win 8 LocalStorage настройки не сохранены
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
localSettings.Values["stupidcrap"] = "test1";
а затем после перезапуска приложения в Visual Studio:
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
Debug.WriteLine(localSettings.Values["stupidcrap"]);
он ничего не печатает (что означает, что объект равен нулю).
Почему это происходит?
Когда я делаю это так:
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
localSettings.Values["stupidcrap"] = "test1";
Debug.WriteLine(localSettings.Values["stupidcrap"]);
он печатает успешно, но суть в том, что сохраняемые значения доступны после перезапуска приложения....
Почему память / хранилище / что-то еще не сохраняет мои значения?
1 ответ
Решение
Когда вы хотите добавить значение, вы должны позвонить 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;
}
}