【问题标题】:Win 8 LocalStorage settings not savedWin 8 LocalStorage 设置未保存
【发布时间】:2013-06-26 11:14:53
【问题描述】:
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
localSettings.Values["stupidcrap"] = "test1";

然后在 Visual Studio 中重新启动应用程序后:

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

它什么也不打印(这意味着 Object 为空)。

为什么会这样?

当我这样做时:

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

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

为什么内存/存储/其他没有保存我的值?

【问题讨论】:

    标签: c# .net application-data


    【解决方案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;
        }
    
    }
    

    【讨论】:

    • 谢谢你的作品。奇怪的是,在 MSDN 的教程中,它说只需通过 localSettings.Values["asd"] = value;
    • 我在这个确切的问题上浪费了我的生命,并在 MSDN 网页上留下了反馈,要求他们使用 localSettings.Values.Add(key, value) 行更新页面示例。跨度>
    • 在我的情况下它仍然没有保存设置
    • @user3149172 你确定吗?确保在调试时不要强制关闭应用程序,强制关闭将丢弃所有更改。此代码在我的 6 个应用程序(Windows 8.1 和 Windows Phone)中完美运行
    • 这是什么意思?我设置了密钥,然后在 VS 中设置了“暂停和关闭”。当我下次运行应用程序时,没有任何键。
    猜你喜欢
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 2018-08-24
    • 2014-05-24
    相关资源
    最近更新 更多