2010-03-02 194 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進行序列化。

您必須根據您的應用需求在這些之間進行選擇。