我已將XAML文件添加到Windows Phone 8項目。其構建操作是「頁面」。我想將XAML作爲文本字符串加載(輸入XamlReader.Load()
)。我怎樣才能做到這一點?構建爲「頁面」的XAML文件在哪裏去?
它不作爲XAP包中的單獨文件提供;它可能是DLL中的某個地方。
我已將XAML文件添加到Windows Phone 8項目。其構建操作是「頁面」。我想將XAML作爲文本字符串加載(輸入XamlReader.Load()
)。我怎樣才能做到這一點?構建爲「頁面」的XAML文件在哪裏去?
它不作爲XAP包中的單獨文件提供;它可能是DLL中的某個地方。
當設置爲Page
時,編譯器會將XAML編譯爲BAML,並將BAML文件作爲資源添加到程序集中。
如果您希望在運行時將原始XAML從BAML資源中取出,那麼您需要反序列化BAML,然後將對象序列化爲XAML。
您可以在Baml2006Reader看看,或者更好的選擇是使用Application.LoadComponent
這是什麼InitializeComponent
方法內部使用。 InitializeComponent
由部分生成的類爲後面的XAML代碼調用。
var uri = new Uri("/MyAppName;component/MyXaml.xaml", //Note extension: XAML, not BAML
UriKind.Relative);
Page rootObject = new Page(); //Assuming XAML root element is Page - it could be anything
Application.LoadComponent(rootObject, uri);
(假設您的XAML文件的根元素是Page
)。
您可以使用XamlWriter
然後序列化Page
到XAML字符串:
string xaml = XamlWriter.Save(rootObject);
請注意,這是在System.Windows.Markup
命名空間中的XamlWriter
,不System.Xaml
。如果你的XAML有WPF類型,那麼你應該使用這個XamlWriter
來避免錯誤。
修正了片段tx。 –