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

C# 关闭应用程序后未保存复合设置值,c#,uwp,win-universal-app,C#,Uwp,Win Universal App,保存功能结束时,将正确保存和检索复合设置。但是,在关闭VisualStudio运行时实例并再次运行项目后,复合值将恢复为默认值。这里可能出了什么问题 保存 private void SaveSettings() { var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; var compositeTest = (Windows.Storage.Applicatio

保存功能结束时,将正确保存和检索复合设置。但是,在关闭VisualStudio运行时实例并再次运行项目后,复合值将恢复为默认值。这里可能出了什么问题

保存

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"];
}
构建

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

您需要将复合设置添加到
LocalSettings
的值
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"];
}
编辑:尝试重置
localSettings.Values[“Test”]
键入
SaveSettings()
方法:

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

您需要将复合设置添加到
LocalSettings
的值
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"];
}
编辑:尝试重置
localSettings.Values[“Test”]
键入
SaveSettings()
方法:

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

什么类型的
PropA
?什么类型的
PropA
?我认为不需要在Save函数中使用“new Windows.Storage.ApplicationDataCompositeValue()”,因为这是在每次启动ViewModel时在BuildSettings中完成的。请尝试重置localSettings。SaveSettings()方法中的值[“Test”]键。我编辑了我的答案。我认为保存函数中不需要“new Windows.Storage.ApplicationDataCompositeValue()”,因为每次启动ViewModel时都会在BuildSettings中执行此操作。请尝试重置localSettings。SaveSettings()方法中的值[“Test”]键。我编辑了我的答案。