在我的WPF MVVM
申请中,我将Model
,View
和ViewModel
作为单独的项目。现在,在我的View
应用程序中,我有Settings.settings
文件中定义的用户设置,我可以通过以下方式访问它们:
Properties.Settings.Default.MySettingName
在我的Tool.exe.xml中,我可以确认设置是否存在:
<userSettings>
<Tool.Properties.Settings>
<setting name="MySettingName" serializeAs="String">
<value>False</value>
</setting>
</Tool.Properties.Settings>
</userSettings>
现在的问题是如何从ViewModel项目中访问这些设置?
很明显,如果我做Properties.Settings.Default.*
,它将指向它自己的设置。
到目前为止,我尝试了以下两种方式:
Configuration configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
KeyValueConfigurationCollection settings = configFile.AppSettings.Settings;
和
var keys = ConfigurationManager.AppSettings.AllKeys;
但是他们两个总是返回0个实体。
我也知道我可以在View中创建ViewModel
并绑定设置,但对于这种特殊情况,创建一个新的ViewModel
只是为了访问setings听起来有点矫枉过正。
感谢您的帮助!
答案 0 :(得分:0)
AppSettings用于&#39;默认&#39; appSettings配置部分。您需要打开自己的配置部分。试试这个:
ConfigurationManager.GetSection("userSettings");
答案 1 :(得分:0)
感谢https://stackoverflow.com/a/632161/1729349
以下是我能够访问设置值的方法:
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;