C# 如何在WPF多窗口应用程序中动态加载和保存用户设置?

C# 如何在WPF多窗口应用程序中动态加载和保存用户设置?,c#,.net,wpf,visual-studio,settings,C#,.net,Wpf,Visual Studio,Settings,我正在尝试在WPF应用程序中保存用户设置。我想保存他们的窗口位置和大小。为此,我激励自己 我稍微更改了保存代码以执行以下操作: var oBaseProp = Properties.Settings.Default.Properties["baseProp"]; Properties.Settings.Default["baseProp"] = "1"; System.Configuration.SettingsProperty property

我正在尝试在WPF应用程序中保存用户设置。我想保存他们的窗口位置和大小。为此,我激励自己

我稍微更改了保存代码以执行以下操作:

 var oBaseProp = Properties.Settings.Default.Properties["baseProp"];
            Properties.Settings.Default["baseProp"] = "1";
            System.Configuration.SettingsProperty property = new System.Configuration.SettingsProperty("W_" + this.GetType().FullName + "_PLACEMENT"
                , typeof(string), oBaseProp.Provider, false, GetPlacement(this), System.Configuration.SettingsSerializeAs.String, oBaseProp.Attributes,
                false, false);
            Properties.Settings.Default.Properties.Add(property);
            Properties.Settings.Default["W_" + this.GetType().FullName + "_PLACEMENT"] = GetPlacement(this);
            Properties.Settings.Default.Save();
BaseProp是在我的设置中定义的字符串属性,它是无用的,只用于检索提供者和其他内容

保存时一切正常,我在C:\Users\christophe.mom.DOMAINE-EPSILOG\AppData\Local\EPSILOG\msante\u GUI.vshost.exe\u Url\fkwxpmo4exiyrjk2vha2qu2upx5sgrvn\1.0.0.0路径中有一个新文件,user.config包含所需的数据

问题是,我无法将此文件作为设置文件加载:

 void StandardWindow_SourceInitialized(object sender, EventArgs e)
    {
        try
        {
            Properties.Settings.Default.Reload();
            var sPlacement = (string)Properties.Settings.Default.Properties["W_" + this.GetType().FullName + "_PLACEMENT"].DefaultValue;
            if (!string.IsNullOrWhiteSpace(sPlacement))
            {
                this.SetPlacement(this, sPlacement);
            }
        }
        catch { }
    }
我不明白为什么我的实际设置没有加载。我也尝试了执行(而不是调试)模式,但仍然没有结果

有人有主意吗


谢谢

事实上,这只适用于在发行版中编译的执行模式(在我的例子中)。

它可能与您订阅的事件有关。尝试检查句柄是否已创建。如果没有,请使用另一个事件进行订阅。“未加载”是什么意思?已加载但未应用或确实未加载异常或其他内容?我没有任何异常,我只在defaut.properties中看不到我的设置键,它存在于磁盘上的文件中(不在visual studio中,因为所有设置都是在运行时完成的)。我重写onsourceinitialized而不是event,它不会改变任何东西,因此,在调试器中,您无法找到设置,这些设置是您在适当的索引器下正确保存到磁盘的?是的,似乎加载了错误的设置文件(默认情况下是一个,而不是我的appData目录中的一个)Hmmm,根据您告诉的代码加载默认值。通过使用XML文件和appConfig关键字来存储这些设置,我知道这种方法。