public TemplateContent(XamlReader xamlReader)
 {
     if (xamlReader == null)
         throw new ArgumentNullException("xamlReader");
     _SchemaContext = xamlReader.SchemaContext;
     _Cache = new MemoryStream();
     XamlXmlWriter writer = new XamlXmlWriter(_Cache, xamlReader.SchemaContext);
     //writer.WriteNamespace(xamlReader.Namespace);
     while (xamlReader.Read())
     {
         writer.WriteNode(xamlReader);
     }
     writer.Close();
 }
        public MainWindow()
        {
            InitializeComponent();

            using (var reader = new XamlXmlReader("./Button.xaml"))
            using (var writer = new XamlXmlWriter(new FileStream("./Test.xaml", FileMode.Create), reader.SchemaContext))
            {
                while (reader.Read())
                {
                    writer.WriteNode(reader);
                }
            }

            using (var reader = new XamlObjectReader(new Button()))
            using (var writer = new XamlObjectWriter(reader.SchemaContext))
            {
                while (reader.Read())
                {
                    writer.WriteNode(reader);
                }

                var button = (Button)writer.Result;
            }

            using (var reader = new XamlXmlReader(new StringReader("<Button xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">This is a button</Button>")))
            using (var writer = new XamlObjectWriter(reader.SchemaContext))
            {
                while (reader.Read())
                {
                    writer.WriteNode(reader);
                }

                var button = (Button)writer.Result;
            }

            var button1 = (Button)XamlServices.Load("./Button.xaml");
            var button2 = XamlServices.Load(new XamlObjectReader(new Button()));
            var button3 = XamlServices.Load(new StringReader("<Button xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">This is a button</Button>"));
            var button4 = XamlServices.Parse("<Button xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">This is a button</Button>");
            XamlServices.Save("./Test2.xaml", new Button());

            //DispatcherObject methods, hidden from intellisense via the EditorBrowsableAttribute
            button1.CheckAccess();
            button1.VerifyAccess();
        }
        /// <summary>
        /// Injects the XAML with replacement types
        /// </summary>
        private void InjectXaml()
        {
            var writerSettings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true };

            // using (XmlReader.Create(this.xamlFile))
            using (var xmlWriter = XmlWriter.Create(this.testXamlFile, writerSettings))
            using (this.xamlXmlReader)
            using (var xamlWriter = new XamlXmlWriter(xmlWriter, this.xamlXmlReader.SchemaContext))
            {
                var skippedLastNode = false;
                while (skippedLastNode || this.xamlXmlReader.Read())
                {
                    skippedLastNode = false;

                    Type replacementType;
                    if (this.xamlXmlReader.NodeType == XamlNodeType.StartObject
                        && this.xamlXmlReader.Type.UnderlyingType != null
                        && this.testDoubles.TryGetDouble(this.xamlXmlReader.Type.UnderlyingType, out replacementType))
                    {
                        xamlWriter.WriteStartObject(xamlWriter.SchemaContext.GetXamlType(replacementType));
                    }
                    else if (this.xamlXmlReader.NodeType == XamlNodeType.StartMember
                             &&
                             (this.xamlXmlReader.Member == XamlLanguage.Base
                              || this.xamlXmlReader.Member == XamlLanguage.Space))
                    {
                        // Skip XML members that are automatically added by the XAML stack
                        this.xamlXmlReader.Skip();
                        skippedLastNode = !this.xamlXmlReader.IsEof;
                    }
                    else
                    {
                        xamlWriter.WriteNode(this.xamlXmlReader);
                    }
                }
            }
        }