如何将XAML序列化为其他普通XML节点的一部分?

时间:2011-06-30 06:14:52

标签: wpf xml xaml serialization

我想在单个设置文件中序列化XAML和其他app-settings-info。类似的东西:

<root>
    <settings>
        ...
    </settings>
    <xaml_stuff>
        ...
    </xaml_stuff>
</root>

我会感谢任何指导如何优雅地完成它:我一方面有XamlWriter另一方面有其他XML-API \命名空间,但我找不到连接它们的方法在一起。

1 个答案:

答案 0 :(得分:1)

看看这是否有帮助:http://msdn.microsoft.com/en-us/library/ms590446.aspx

根据我的理解,它首先将其序列化为XmlWriter,然后您可以使用它来添加其他非xaml内容

编辑:这是一个具体的C#示例(对我之前所说的内容进行了一些更改)......

XmlTextWriter w = new XmlTextWriter("test.xml", Encoding.UTF8);
w.WriteStartElement("root");
w.WriteAttributeString("xmlns", "x");
w.WriteStartElement("item1");
w.WriteEndElement();
w.WriteStartElement("item2");
w.WriteEndElement();

Button btn = new Button();
btn.Content = "Test Button";
btn.Width = 200;
btn.Height = 100;
btn.Foreground = Brushes.Green;

string buf = XamlWriter.Save(btn);
XmlTextReader reader = new XmlTextReader(new StringReader(buf));
reader.Read();
w.WriteNode(reader, true);

w.WriteEndElement();
w.Flush();
w.Close();

以下是它生成的文件的内容:

<root xmlns="x">
    <item1 />
    <item2 />
    <Button Foreground="#FF008000" Width="200" Height="100" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">Test Button</Button>
</root>