从另一个项目中读取Properties.Settings.Default

时间:2015-04-21 13:10:01

标签: c# .net wpf configuration settings

在我的WPF MVVM申请中,我将ModelViewViewModel作为单独的项目。现在,在我的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听起来有点矫枉过正。

感谢您的帮助!

2 个答案:

答案 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;