internal static XamlNode GetEndObject(XamlDomObject objectNode) { _xamlNode.Clear(); _xamlNode.NodeType = XamlNodeType.EndObject; _xamlNode.LineNumber = objectNode.EndLineNumber; _xamlNode.LinePosition = objectNode.EndLinePosition; return(_xamlNode); }
private bool IsObjectNodeAssignable(XamlType type, XamlDomObject objectNode) { if (type == null || (!objectNode.IsGetObject && objectNode.Type.CanAssignTo(type)) || (objectNode.IsGetObject && objectNode.Parent != null && objectNode.Parent.Member.Type.CanAssignTo(type))) { return(true); } return(false); }
private IEnumerable <XamlNode> WritePossibleAttributes(XamlDomObject objectNode) { foreach (var memberNode in objectNode.MemberNodes) { if (IsAttribute(memberNode)) { foreach (var node in ReadMemberNode(memberNode)) { yield return(node); } } } }
public static void Save(XamlDomObject rootObjectNode, string fileName) { var schemaContext = rootObjectNode.Type.SchemaContext; var dr = new XamlDomReader(rootObjectNode, schemaContext); var xws = new XmlWriterSettings(); xws.Indent = true; using (var xw = XmlWriter.Create(fileName, xws)) { var xxw = new XamlXmlWriter(xw, schemaContext); XamlServices.Transform(dr, xxw); } }
public static XamlDomObject Load(string fileName, XamlSchemaContext schemaContext) { XamlDomObject rootObject = null; using (var xr = XmlReader.Create(fileName)) { var xxrs = new XamlXmlReaderSettings(); xxrs.ProvideLineInfo = true; var xxr = new XamlXmlReader(xr, schemaContext, xxrs); rootObject = (XamlDomObject)Load(xxr); } return(rootObject); }
private IEnumerable <XamlNode> WriteElementMembers(XamlDomObject objectNode) { foreach (var memberNode in objectNode.MemberNodes) { if (IsAttribute(memberNode)) { continue; } foreach (var node in ReadMemberNode(memberNode)) { yield return(node); } } }
public static XamlNode GetStartObject(XamlDomObject objectNode) { _xamlNode.Clear(); if (objectNode.IsGetObject) { _xamlNode.NodeType = XamlNodeType.GetObject; } else { _xamlNode.NodeType = XamlNodeType.StartObject; _xamlNode.Type = objectNode.Type; } _xamlNode.LineNumber = objectNode.StartLineNumber; _xamlNode.LinePosition = objectNode.StartLinePosition; return(_xamlNode); }
private IEnumerable <XamlNode> ReadObjectNode(XamlDomObject objectNode) { foreach (var nsNode in objectNode.Namespaces) { yield return(XamlNode.GetNamespaceDeclaration(nsNode)); } yield return(XamlNode.GetStartObject(objectNode)); // We want to write out simple things that could be attributes out first if setting is set // We write out single values and things that are MEs if (!_doNotReorder) { foreach (var node in WritePossibleAttributes(objectNode)) { yield return(node); } foreach (var node in WriteElementMembers(objectNode)) { yield return(node); } } else { foreach (var memberNode in objectNode.MemberNodes) { foreach (var node in ReadMemberNode(memberNode)) { yield return(node); } } } yield return(XamlNode.GetEndObject(objectNode)); }