C# 从其他项目读取Properties.Settings.Default
在我的C# 从其他项目读取Properties.Settings.Default,c#,.net,wpf,configuration,settings,C#,.net,Wpf,Configuration,Settings,在我的wpfmvvm应用程序中,我将Model、View和ViewModel作为一个单独的项目。现在,在我的视图应用程序中,我在设置中定义了用户设置。设置文件中,我可以通过以下方式访问它们: Properties.Settings.Default.MySettingName 在我的Tool.exe.xml中,我可以确认设置是否存在: <userSettings> <Tool.Properties.Settings> <setting nam
wpfmvvm
应用程序中,我将Model
、View
和ViewModel
作为一个单独的项目。现在,在我的视图
应用程序中,我在设置中定义了用户设置。设置
文件中,我可以通过以下方式访问它们:
Properties.Settings.Default.MySettingName
在我的Tool.exe.xml中,我可以确认设置是否存在:
<userSettings>
<Tool.Properties.Settings>
<setting name="MySettingName" serializeAs="String">
<value>False</value>
</setting>
</Tool.Properties.Settings>
</userSettings>
及
但它们都始终返回0个实体
我还知道我可以创建一个ViewModel
并从视图绑定设置,但对于这种特殊情况,创建一个新的ViewModel
来访问设置听起来有点过分了
谢谢你的帮助 AppSettings用于“默认”AppSettings配置部分。您需要打开自己的配置部分。试试这个:
ConfigurationManager.GetSection("userSettings");
多亏了
下面是我如何访问设置值的:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// find section
ClientSettingsSection configSection = config.SectionGroups[@"userSettings"].Sections["Tool.Properties.Settings"] as ClientSettingsSection;
var setting = configSection.Settings.Get("MySettingName").Value.ValueXml.InnerText;
如果使用的是visual studio,则可以将“设置”类的访问修饰符更改为“公共”。双击Settings.Settings文件,顶部有一个下拉列表。然后,您可以使用完整的名称空间访问设置。更好的方法是提供一个服务,使用
SettingsBase
包装设置。您可以提供更多关于服务的详细信息吗?看起来不错,但我仍然只获取默认值,而不是配置文件中的值:-(NVM..我真傻。如果生成另一个链接项目,Visual studio每次在生成时都会覆盖配置文件。
ConfigurationManager.GetSection("userSettings");
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// find section
ClientSettingsSection configSection = config.SectionGroups[@"userSettings"].Sections["Tool.Properties.Settings"] as ClientSettingsSection;
var setting = configSection.Settings.Get("MySettingName").Value.ValueXml.InnerText;