Пример #1
0
 internal static XamlNode GetEndObject(XamlDomObject objectNode)
 {
     _xamlNode.Clear();
     _xamlNode.NodeType     = XamlNodeType.EndObject;
     _xamlNode.LineNumber   = objectNode.EndLineNumber;
     _xamlNode.LinePosition = objectNode.EndLinePosition;
     return(_xamlNode);
 }
Пример #2
0
        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);
        }
Пример #3
0
 private IEnumerable <XamlNode> WritePossibleAttributes(XamlDomObject objectNode)
 {
     foreach (var memberNode in objectNode.MemberNodes)
     {
         if (IsAttribute(memberNode))
         {
             foreach (var node in ReadMemberNode(memberNode))
             {
                 yield return(node);
             }
         }
     }
 }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
                }
            }
        }
Пример #7
0
 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);
 }
Пример #8
0
        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));
        }