public override void SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection values) {
string sectionName = GetSectionName(context);
IDictionary roamingUserSettings = new Hashtable();
IDictionary localUserSettings = new Hashtable();
foreach (SettingsPropertyValue value in values) {
SettingsProperty setting = value.Property;
bool isUserSetting = IsUserSetting(setting);
if (value.IsDirty) {
if (isUserSetting) {
bool isRoaming = IsRoamingSetting(setting);
StoredSetting ss = new StoredSetting(setting.SerializeAs, SerializeToXmlElement(setting, value));
if (isRoaming) {
roamingUserSettings[setting.Name] = ss;
}
else {
localUserSettings[setting.Name] = ss;
}
value.IsDirty = false; //reset IsDirty
}
else {
// This is an app-scoped or connection string setting that has been written to.
// We don't support saving these.
}
}
}
if (roamingUserSettings.Count > 0) {
Store.WriteSettings(sectionName, true, roamingUserSettings);
}
if (localUserSettings.Count > 0) {
Store.WriteSettings(sectionName, false, localUserSettings);
}
}