Beispiel #1
0
 public static void Save(XmlWriter xmlWriter, object instance)
 {
     using (var writer = new XamlXmlWriter(xmlWriter, context))
     {
         Save(writer, instance);
     }
 }
Beispiel #2
0
 public static void Save(Stream stream, object instance)
 {
     using (var writer = new XamlXmlWriter(stream, context))
     {
         Save(writer, instance);
     }
 }
Beispiel #3
0
        public void SettingsNull()
        {
            // allowed.
            var w = new XamlXmlWriter(new MemoryStream(), sctx, null);

            Assert.AreEqual(sctx, w.SchemaContext, "#1");
            Assert.IsNotNull(w.Settings, "#2");
        }
Beispiel #4
0
        public void StartObjectValue()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteValue("foo");
        }
Beispiel #5
0
        public void GetObjectAfterStartObject()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteGetObject();
        }
Beispiel #6
0
 private static void Save(XamlXmlWriter writer, object instance)
 {
     var readerSettings = new XamlObjectReaderSettings();
     using (var reader = new XamlObjectReader(instance, context, readerSettings))
     {
         XamlServices.Transform(reader, writer);
     }
 }
Beispiel #7
0
        public void StartObjectWriteEndMember()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteEndMember();
        }
Beispiel #8
0
        public void EndObjectAfterNamespace()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteNamespace(new NamespaceDeclaration("urn:foo", "y"));
            Assert.Throws <InvalidOperationException> (() => xw.WriteEndObject());
        }
Beispiel #9
0
        public void StartMemberWriteEndObject()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteStartMember(xm);
            Assert.Throws <XamlXmlWriterException> (() => xw.WriteEndObject());
        }
Beispiel #10
0
        public void WriteValueAfterNullValue()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            Assert.Throws <XamlXmlWriterException> (() => xw.WriteValue(null));
            //xw.WriteValue ("bar");
        }
Beispiel #11
0
        public void GetObjectOnNonCollection()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteStartMember(xm);
            Assert.Throws <InvalidOperationException> (() => xw.WriteGetObject());
        }
Beispiel #12
0
        public void InitWriteNamespace()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteNamespace(new NamespaceDeclaration("urn:foo", "x"));               // ignored.
            xw.Close();
            Assert.AreEqual("", sw.ToString(), "#1");
        }
Beispiel #13
0
        private static void Save(XamlXmlWriter writer, object instance)
        {
            var readerSettings = new XamlObjectReaderSettings();

            using (var reader = new XamlObjectReader(instance, context, readerSettings))
            {
                XamlServices.Transform(reader, writer);
            }
        }
Beispiel #14
0
        public void WriteEndObjectExcess()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteEndObject();
            xw.WriteEndObject();
        }
Beispiel #15
0
        public void GetObjectOnNonCollection()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteStartMember(xm);
            xw.WriteGetObject();
        }
Beispiel #16
0
        public void StartMemberWriteEndMember()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteStartMember(xm);
            xw.WriteEndMember();              // wow, really?
        }
Beispiel #17
0
        public void WriteValueTypeNonString()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteStartMember(xm);
            xw.WriteValue(5);              // even the type matches the member type, writing non-string value is rejected.
        }
Beispiel #18
0
        public void EndObjectAfterNamespace()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteNamespace(new NamespaceDeclaration("urn:foo", "y"));
            xw.WriteEndObject();
        }
Beispiel #19
0
        public void WriteValueAfterNullValue()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteValue(null);
            xw.WriteValue("bar");
        }
Beispiel #20
0
        public void GetObjectOnNonCollection2()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteStartMember(new XamlMember(typeof(string).GetProperty("Length"), sctx));                 // Length is of type int, which is not a collection
            xw.WriteGetObject();
        }
Beispiel #21
0
        void UpdateXaml()
        {
            var sb = new StringBuilder();

            using (var xmlWriter = new XamlXmlWriter(sb)) {
                DesignSurface.SaveDesigner(xmlWriter);
                Text = XamlFormatter.Format(sb.ToString());
            }
        }
Beispiel #22
0
        /// <summary>
        /// Serialize an Activity to a Xaml string.
        /// </summary>
        public static string Serialize(this Activity activity)
        {
            var builder        = new StringBuilder();
            var writer         = new XamlXmlWriter(new StringWriter(builder), new XamlSchemaContext());
            var activityWriter = ActivityXamlServices.CreateBuilderWriter(writer);

            XamlServices.Save(activityWriter, activity);
            return(builder.ToString());
        }
Beispiel #23
0
        public string DecompileBaml(MemoryStream bamlCode, string containingAssemblyFile, ConnectMethodDecompiler connectMethodDecompiler, AssemblyResolver asmResolver)
        {
            this.asmResolver = asmResolver;
            AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolve;

            bamlCode.Position = 0;
            TextWriter w = new StringWriter();

            Assembly assembly = Assembly.LoadFile(containingAssemblyFile);

            Baml2006Reader reader = new Baml2006Reader(bamlCode, new XamlReaderSettings()
            {
                ValuesMustBeString = true, LocalAssembly = assembly
            });
            var xamlDocument = Parse(reader);

            string bamlTypeName = xamlDocument.OfType <XamlObjectNode>().First().Type.UnderlyingType.FullName;

            var eventMappings = connectMethodDecompiler.DecompileEventMappings(bamlTypeName);

            foreach (var xamlNode in xamlDocument)
            {
                RemoveConnectionIds(xamlNode, eventMappings, reader.SchemaContext);
                AvoidContentProperties(xamlNode);
                MoveXKeyToFront(xamlNode);
            }

            XDocument     doc    = new XDocument();
            XamlXmlWriter writer = new XamlXmlWriter(doc.CreateWriter(), reader.SchemaContext, new XamlXmlWriterSettings {
                AssumeValidInput = true
            });

            foreach (var xamlNode in xamlDocument)
            {
                xamlNode.WriteTo(writer);
            }
            writer.Close();

            // Fix namespace references
            string suffixToRemove = ";assembly=" + assembly.GetName().Name;

            foreach (XAttribute attrib in doc.Root.Attributes())
            {
                if (attrib.Name.Namespace == XNamespace.Xmlns)
                {
                    if (attrib.Value.EndsWith(suffixToRemove, StringComparison.Ordinal))
                    {
                        string newNamespace = attrib.Value.Substring(0, attrib.Value.Length - suffixToRemove.Length);
                        ChangeXmlNamespace(doc, attrib.Value, newNamespace);
                        attrib.Value = newNamespace;
                    }
                }
            }

            return(doc.ToString());
        }
Beispiel #24
0
        public void ValueThenNamespace()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteStartMember(xm);
            xw.WriteValue("foo");
            xw.WriteNamespace(new NamespaceDeclaration("y", "urn:foo"));               // this does not raise an error (since it might start another object)
        }
Beispiel #25
0
        [ExpectedException(typeof(InvalidOperationException))]           // ... shouldn't it be XamlXmlWriterException?
        public void WriteValueAfterNamespace()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteStartMember(XamlLanguage.Initialization);
            xw.WriteNamespace(new NamespaceDeclaration("urn:foo", "y"));
            xw.WriteValue("foo");
        }
Beispiel #26
0
        public void WriteValueList()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(new XamlType(typeof(List <string>), sctx));
            xw.WriteStartMember(XamlLanguage.Items);
            xw.WriteValue("foo");
            xw.WriteValue("bar");
        }
Beispiel #27
0
        public void WriteStartObjectAfterTopLevel()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteEndObject();
            // writing another root is not allowed.
            xw.WriteStartObject(xt);
        }
Beispiel #28
0
        public void InitWriteStartObject()
        {
            string xml = @"<?xml version='1.0' encoding='utf-16'?><Int32 xmlns='http://schemas.microsoft.com/winfx/2006/xaml' />";
            var    sw  = new StringWriter();
            var    xw  = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(new XamlType(typeof(int), sctx));
            xw.Close();
            Assert.AreEqual(xml, sw.ToString().Replace('"', '\''), "#1");
        }
        private void Export()
        {
            var sb = new StringBuilder();

            using (var xmlWriter = new XamlXmlWriter(sb))
            {
                designSurface.SaveDesigner(xmlWriter);
            }
            var xamlCode = sb.ToString();
        }
 void Initialize(XamlXmlWriter xamlXmlWriter)
 {
     this.xamlXmlWriter = xamlXmlWriter;
     settings           = xamlXmlWriter.Settings; // This will clone, only want to do this once
     meSettings         = meSettings ?? new XamlMarkupExtensionWriterSettings();
     currentState       = Start.State;
     sb     = new StringBuilder();
     nodes  = new Stack <Node>();
     failed = false;
 }
Beispiel #31
0
        public void WriteStartObjectAfterTopLevel()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt);
            xw.WriteEndObject();
            // writing another root is not allowed.
            Assert.Throws <XamlXmlWriterException> (() => xw.WriteStartObject(xt));
        }
Beispiel #32
0
        public void EndObjectAfterGetObject()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt2);
            xw.WriteStartMember(new XamlMember(typeof(Foo).GetProperty("Bar"), sctx));
            xw.WriteGetObject();
            xw.WriteEndObject();
        }
Beispiel #33
0
        public void EndMemberAfterGetObject()
        {
            var sw = new StringWriter();
            var xw = new XamlXmlWriter(sw, sctx, null);

            xw.WriteStartObject(xt2);
            xw.WriteStartMember(new XamlMember(typeof(Foo).GetProperty("Bar"), sctx));
            xw.WriteGetObject();
            Assert.Throws <XamlXmlWriterException> (() => xw.WriteEndMember());             // ...!?
        }