动态解析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 将其解析为十六进制字符串,而无法加载

posted @ 2012-07-07 11:35  挑战  阅读(1487)  评论(0编辑  收藏  举报