简体   繁体   English

关闭应用程序后未保存复合设置值

[英]Composite Setting Values not Saved after Closing the App

By the end of the Saving function, composite settings are saved and retrieved correctly. 在“保存”功能结束时,可以正确保存和检索复合设置。 However after closing down the Visual Studio run time instance and running the project again, composite values are back to default. 但是,在关闭Visual Studio运行时实例并再次运行项目后,复合值将恢复为默认值。 What could be wrong here? 这有什么问题吗?

Save

private void SaveSettings()
    {
        var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
        var compositeTest = (Windows.Storage.ApplicationDataCompositeValue)localSettings.Values["Test"];

        // Save test
        compositeTest["A"] = PropA;
        compositeTest["B"] = PropB;
        compositeTest["C"] = PropC;

        // Retrieve test
        var a = compositeTest["A"];
        var b = compositeTest["B"];
        var c = compositeTest["C"];
}

Build 建立

private void BuildSettings()
    {
        var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
        var compositeTest = (Windows.Storage.ApplicationDataCompositeValue)localSettings.Values["Test"];

            if (compositeTest == null)
            {
                Windows.Storage.ApplicationDataCompositeValue composite = new Windows.Storage.ApplicationDataCompositeValue();

                composite["A"] = PropA= 1;
                composite["B"] = PropB= 1;
                composite["C"] = PropC= 1;

                localSettings.Values["Test"] = composite;
            }
            else
            {
                PropA= (int)compositeTest["A"];
                PropB= (int)compositeTest["B"];
                PropC= (int)compositeTest["C"];
            }
 }

You need to add the composite setting to the Values IPropertySet of the LocalSettings : 您需要将复合设置添加到LocalSettings的Values IPropertySet中:

private void SaveSettings()
{
    var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
    var compositeTest = new Windows.Storage.ApplicationDataCompositeValue();

    compositeTest["A"] = "A";

    localSettings.Values["Test"] = compositeTest;

}

private void BuildSettings()
{
    var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
    var compositeTest = localSettings.Values["Test"] as Windows.Storage.ApplicationDataCompositeValue;

    var a = compositeTest["A"];
}

Edit: Try to reset the localSettings.Values["Test"] key in your SaveSettings() method: 编辑:尝试在SaveSettings()方法中重置localSettings.Values["Test"]键:

private void SaveSettings()
{
    var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
    var compositeTest = (Windows.Storage.ApplicationDataCompositeValue)localSettings.Values["Test"];

    // Save test
    compositeTest["A"] = PropA;
    compositeTest["B"] = PropB;
    compositeTest["C"] = PropC;

    // Retrieve test
    var a = compositeTest["A"];
    var b = compositeTest["B"];
    var c = compositeTest["C"];

    localSettings.Values["Test"] = compositeTest;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM