我想获得WPF窗口(MainWindow)的XAML源代码。单击该窗口上的按钮将返回窗口的XAML,我将其保存在另一个文件中。
这可能吗?如何实现?
答案 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进行序列化。
您必须根据应用需求在这些选项之间进行选择。