public override void WriteStartMember(XamlMember property) { var propertyNode = new XamlDomMember(property); // Only need to set the SchemaContext if it's a XamlDirective if (property.IsDirective) { propertyNode.SchemaContext = SchemaContext; } if (RootNode != null) { var objectNode = (XamlDomObject)writerStack.Peek(); objectNode.MemberNodes.Add(propertyNode); } else { RootNode = propertyNode; } propertyNode.StartLineNumber = _lineNumber; propertyNode.StartLinePosition = _linePosition; writerStack.Push(propertyNode); }
private IEnumerable <XamlNode> WalkDom(XamlDomNode domNode) { var objectNode = domNode as XamlDomObject; if (objectNode != null) { foreach (var node in ReadObjectNode(objectNode)) { yield return(node); } } else { var memberNode = domNode as XamlDomMember; if (memberNode != null) { foreach (var node in ReadMemberNode(memberNode)) { yield return(node); } } else { foreach (var node in ReadValueNode(domNode as XamlDomValue)) { yield return(node); } } } }
public XamlDomReader(XamlDomNode domNode, XamlSchemaContext schemaContext, XamlDomReaderSettings settings) { if (schemaContext == null) { throw new ArgumentNullException("schemaContext"); } if (domNode == null) { throw new ArgumentNullException("domNode"); } SchemaContext = schemaContext; if (settings != null) { _doNotReorder = settings.DoNotReorderMembers; } _nodes = WalkDom(domNode).GetEnumerator(); }
private void WriteObject(XamlType xamlType, bool isGetObject) { var objectNode = isGetObject ? new XamlDomObject() : new XamlDomObject(xamlType); objectNode.IsGetObject = isGetObject; objectNode.StartLinePosition = _linePosition; objectNode.StartLineNumber = _lineNumber; // If it's a GetObject or a Directive, we need to store the actual XamlSchemaContext if (objectNode.IsGetObject || objectNode.Type.SchemaContext == XamlLanguage.Object.SchemaContext) { objectNode.SchemaContext = SchemaContext; } if (_namespaces != null) { foreach (var xdns in _namespaces) { objectNode.Namespaces.Add(xdns); } _namespaces.Clear(); } // If Root Node is null then this is the root node. // If Root Node is not null, then add this to the parent member. if (RootNode == null) { RootNode = objectNode; } else { var propertyNode = (XamlDomMember)writerStack.Peek(); propertyNode.Items.Add(objectNode); objectNode.Parent = propertyNode; if (isGetObject) { objectNode.Type = propertyNode.Member.Type; } } writerStack.Push(objectNode); }
public override void WriteValue(object value) { var valueNode = new XamlDomValue(); valueNode.Value = value; if (RootNode != null) { //text should always be inside of a property... var propertyNode = (XamlDomMember)writerStack.Peek(); propertyNode.Items.Add(valueNode); } else { RootNode = valueNode; } valueNode.StartLineNumber = _lineNumber; valueNode.StartLinePosition = _linePosition; valueNode.EndLineNumber = _lineNumber; valueNode.EndLinePosition = _linePosition; }
public XamlNodeCollection(XamlDomNode parent) { _parentNode = parent; }
public XamlDomReader(XamlDomNode domNode, XamlSchemaContext schemaContext) : this(domNode, schemaContext, null) { }