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); } } } }