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

}
Другие вопросы по тегам