彩票走势图

学习运行时加载和解析XAML

转帖|其它|编辑:郝浩|2011-08-17 15:00:52.000|阅读 613 次

概述:WPF的运行时XAML解析器公开为两个类,它们都位于System.Windows.Markup命名空间中:XamlReader和 XamlWriter,而且它们的API已经再简单不过了,XamlReader包含了一些对静态Load方法的重载,而XamlWriter包含了一些对静态Save方法的重载.

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

  WPF的运行时XAML解析器公开为两个类,它们都位于System.Windows.Markup命名空间中:XamlReader和XamlWriter,而且它们的API已经再简单不过了,XamlReader包含了一些对静态Load方法的重载,而XamlWriter包含了一些对静态Save方法的重载.

  1、XamlReader

  XamlReader.Load方法的设置将解析XAML,创建合适的.NET对象,然后返回一个根元素的实例.因此,如果在当前目录下有一个XAML文件叫作MyWindow.xaml,它包含一个Window对象,它包含了一个Window对象作为根结点,那么可以使用下面代码来加载和获得Window对象:

Window window=null;using(FileStream fs=new FileStream
("MyWindow.xaml",FileMode.Open,FileAccess.Read))
{
window=(Window)XamlReader.Load(fs);
}

  这个情况下,Load是与FileStream(位于System.IO命名空间中)一起调用的,在Load返回之后,整个XAML文件的对象层级将在内存中被实例化,因此就不再需要XAML.在前面的代码,退出usiing代码块之后FileStream将被立即关闭,既然现在已经有一个根元素的实例存在,就可以利用适当的内容属性或者集合属性来获得子元素.下面代码假设Window有一个类为StackPanel的子元素,StackPanel的第5个子对象是一个OK Button(XamlReader定义了LoadAsync实例方法用于异步加载和解析XAML内容.例如,在加载大文件或者网络文件时,可以使用)

Window window=null;
using(FileStream fs=
new FileStream("MyWindow.xaml",FileMode.Open,FileAccess.Read))
{
window=(Window)XamlReader.Load(fs);
}
StackPanel panel=(StackPamel)window.Content;
Button okButton=(Button)panel.Children[4];

  2、对于动态皮肤场景来说运行时加载和解析XAML是有意义的,如果要编译一个XAML文件并将它与过程式代码混合,第一步要做的就是为XAML文件的根元素指定一个子类个XAML文件,并把x:Class作为根

  元素,同时创建一个具有部分类定义的代码隐藏源文件,最后把两者连接起来,这样代码构建

  (build)才能顺利进行。

  如果你是一个MSBuild的用户,并且想通过理解项目文件中的内容来使用代码隐藏


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:CSDN

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP