在前面“在WPF中,如何得到任何Object對象的XAML代碼?”一文中,我介紹了使用
System.Windows.Markup.XamlWriter.Save(objName)得到任何Object對象的XAML代碼。,那麼,又怎樣將XAML代碼加載為相應的對象呢?
分兩種情況來講這個問題:
1、在程序中,
XAML代碼已是內存字符串時:
比如:
string xamlContent =@"<Button Height=""50"" Width=""100"" Background=""#FFF0F8FF"" XMLns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">Click Me</Button>";
那麼,我們可以
直接使用StringReader和XMLReader:StringReader stringReader = new StringReader(xamlContent);
XMLReader xmlReader = XMLReader.Create(stringReader);
Button readerLoadButton =
(Button)XamlReader.Load(XMLReader);
注意:需要顯式地將對象轉換為相應的類型。比如這裡使用了(Button)進行顯示轉換。
2、
加載的是包含XAML代碼的文件:
string xamlFileName = @"c:\myButton.xaml";
string xamlContent = string.Empty;
try
{
using (
StreamReader sr = new StreamReader(xamlFileName))
{
xamlContent =
sr.ReadToEnd();
}
}
catch (Exception e)
{
//
}
// 以下同上
StringReader stringReader = new StringReader(xamlContent);