コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
        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);
                }
            }
        }