获取WPF窗口的XAML源代码

时间:2010-03-02 15:18:39

标签: wpf xaml window

我想获得WPF窗口(MainWindow)的XAML源代码。单击该窗口上的按钮将返回窗口的XAML,我将其保存在另一个文件中。

这可能吗?如何实现?

3 个答案:

答案 0 :(得分:3)

您可以使用 XamlWriter

using (Stream stream = File.OpenWrite("D:\\Test.xaml"))
{
    XamlWriter.Save(this, stream);
}

答案 1 :(得分:2)

您可以使用XamlWriter进行基本的Xaml序列化。 特别是,请查看本文的limitations

答案 2 :(得分:1)

之前的答案都是正确的,但我认为还应该提到您还可以使用Reflector的BAMLViewer扩展API提取用于创建窗口的原始XAML(如果需要)。

BAMLViewer解决了与XamlWriter不同的问题:使用Reflector / BAMLViewer将返回原始源XAML,所有绑定等都完好无损但不包含当前属性值。使用XamlWriter将包含当前属性值,但资源引用和标记扩展等内容将丢失。此外,有些东西不会使用XamlWriter进行序列化。

您必须根据应用需求在这些选项之间进行选择。