2010-03-02 116 views
3

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

这是可能的,它是如何实现的?

回答

3

可以使用的XamlWriter

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

谢谢你的解决方案! – user278736 2010-03-02 15:44:25

2

对于某些基本的Xaml序列化,您可以使用XamlWriter。 尤其要看limitations这篇文章。

+0

感谢您的解决方案文档! – user278736 2010-03-02 15:44:46

0

早期的答案都是正确的,但我想这也应该提到的是,你还可以提取用来创建窗口原来的XAML(如果需要的话)使用反射器的BAMLViewer扩展的API。

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

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