public override void SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection) { var sectionName = GetSectionName(context); var dirtySettings = collection .OfType <SettingsPropertyValue>() .Where(i => i.IsDirty) .Select(i => { var element = new SettingElement(i.Name, i.Property.SerializeAs) { Value = { ValueXml = SerializeToXmlElement(i) } }; i.IsDirty = false; return(element); }) .ToList(); if (dirtySettings.Count > 0) { WriteSettings(sectionName, dirtySettings); } }