动态解析XAML文本构建WPF的UI
(1)手工拼凑字符串
string strXaml = @"<Button xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' Content='Button' Height='23' Name='button1' Width='75' />";
StringReader readerXaml = new StringReader(strXaml);
XmlTextReader xtrXaml = new XmlTextReader(readerXaml);
object objXaml = XamlReader.Load(xtrXaml);
this.Content = objXaml;
注意:
1.为了便于编辑,将""改为''
2.Button元素必须指定命名空间,否则XamlReader无法辨识其类型,报错
(2)读取已有文档
string strXaml = "";
Object dataObject = new Object();
Uri uri = new Uri(@"/DepartmentElement.xaml", UriKind.Relative);
StreamResourceInfo info = Application.GetResourceStream(uri);
using (StreamReader sr = new StreamReader(info.Stream))
{
strXaml = sr.ReadToEnd();
}
StringReader readerXaml = new StringReader(strXaml);
XmlTextReader xtrXaml = new XmlTextReader(readerXaml);
object objXaml = XamlReader.Load(xtrXaml);
this.Content = objXaml;
注意:已有文档的BuildAction必须设置为Resource而不是Page,否则XmlTextReader 将其解析为十六进制字符串,而无法加载