private void SerializeItems(GridItem item, XmlNode parent) { if (item != null) { OptionsConverter.CanEnable desc = item.PropertyDescriptor as OptionsConverter.CanEnable; if (desc != null) { string name = item.PropertyDescriptor.Name; object value = item.PropertyDescriptor.GetValue(desc.Object); if (value == null || (value is string && string.IsNullOrEmpty((string)value))) { // Skip } else if (desc.Object != value) { XmlAttribute attr = parent.OwnerDocument.CreateAttribute(name); attr.Value = value.ToString(); parent.Attributes.Append(attr); } else { XmlNode newNode = parent.OwnerDocument.CreateElement(name); parent.AppendChild(newNode); parent = newNode; } } foreach (GridItem g in item.GridItems) { SerializeItems(g, parent); } } }
private void EnableItems(GridItem item, bool enable) { if (item != null) { OptionsConverter.CanEnable desc = item.PropertyDescriptor as OptionsConverter.CanEnable; desc?.Enable(enable); foreach (GridItem g in item.GridItems) { EnableItems(g, enable); } } }
private void DeserializeItems(GridItem item, XmlNode parent) { if (item != null) { item.Expanded = true; OptionsConverter.CanEnable desc = item.PropertyDescriptor as OptionsConverter.CanEnable; if (desc != null && parent != null) { string name = item.PropertyDescriptor.Name; //object value = item.PropertyDescriptor.GetValue(desc.Object); if (desc.Object != item.PropertyDescriptor.GetValue(desc.Object)) { // Attribute XmlAttribute attr = parent.Attributes[name]; if (attr != null) { if (item.PropertyDescriptor.Converter.CanConvertFrom(typeof(string))) { object value = item.PropertyDescriptor.Converter.ConvertFromString(attr.Value); item.PropertyDescriptor.SetValue(desc.Object, value); } } } else { parent = parent.SelectSingleNode(name); } } foreach (GridItem g in item.GridItems) { DeserializeItems(g, parent); } } }