Silverlight基本架构(XAML基本架构)是一个技术的关键所在,在此分享一些研究心得,理解可能有误,大家凑和着看看吧
XAML结构
在Silverlight里,XAML作为控件的基本显示布局文件。Silverlight在浏器中只是一个控件角色,也就是
浏览器中的一个子控件。而XAML编译后是一个一个UserControl、Grid、Canvas和Panel等容器控件的继承类,此类由客户端
浏览器中的Silverlight插件编译,并且调用接口方法。
XAML是以XML标记语言为基础的。XAML中的父节点必须是一个容器控件,而其它的控件只能在此一个父控件中添加。如果
你使用了.net类库支持,可以使用XAML中最父节点的x:Class指定命名空间和属性,这个类必须继承其父节点容器控件!
命名空间引用
特殊命名空间:
默认的http://schemas/microsoft.com/client/2007 标记架构,此包括了所有的WPF标记。
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"动态声明部分,一般指定的是变量
自定义命名空间:
xmlns:custom="clr-namespace:mynamespace.myclass;assembly=myBin/myassembly.dll"
说明:xmln:custom冒号后面的custom是开发者自定义的名称,在XAML文档中使用时的前缀。比如XAML引用时可以使用 mynamespace.myclass.c1控件可以使用<custom:c1>来添加类。
mynamespace是DLL中生成时的命我 空间,myclass是类名。assembly是可选项,如果使用的外部动态链接库可以使用assembly制定其URL地址。
Silverlight发布结构
Silverlight在1.1和2.0 Beta有很大的升级,添加了很多Silverlight控件、完善了需要运行上的机制。其中Visual Studio 2008在生成Silverlight时会把Silverlight Application 生成为一个XAP文件,并由ASP.Net的自定义控件的Source制定!最终到客户端浏览器上同样使用的1.1中的一样,通过JS动态生成 Silverlight object标记。
XAP文件(XAP读为Zap)
在VisualStudio 2008安装SilverlightBeta2 Tools后,VisualStudio会自动把SilverlightApplication 压缩打包为一个XAP文件。可以直接把此文件命名为ZIP并使用解压软件释放此文件,并且你会惊奇的发现其中你写的.xaml文件全部生成了一个DLL中了。只有一个AppManifest.xaml中记录着程序加载项、和制定启动类等信息。
Silverlight运行环境
Silverlight.js文件
此文件由Silvelright SDK提供,可在Blend2新建项目后跟目录下面找到,也可使用VisualStudio中Silverlight模板中找到。他的主要责任就是在浏览器中创建Silverlight的ActiveX插件。并会检测客户端是否有支持版本的Silverlight插件,如果没有找到会输出下载链接代码(在此您可以改不支持时输出的代码)。由不同的浏览器执行和输出不同的代码。并他建一个Silverlight Javascript对象。
一个页面只在需引用一次Silverlight.js文件,您可以打开进行学习javascript脚本语言。页面会在Load以后的调用Silvelright.createObjectEx方法创建Silvelright ActiveX插件。传入对象如下:
Source:”Page.xaml”, //指定的XAML和XAP文件URL访问地址
parentElement: //要插入的DIV容器对象,
id:”SilverlightControlID” //要创建控件的ID
properties:{
width:”100%”, //宽
height:”100%”, //高
version:”1.0”, //中间会把source+到properties里
enableHtmlAccess:” true” //是否Silvelright与浏览器交互,默认true
};
Event:{
onLoad:Silverlight.createDelegate(scene,sene.handleLoad)
};
Default.html
这个文件是一个HTML页,关联着Silvelright.js文件,在此文档中Onload事件中将调用CreateObjectEx方法,一般VisualStudio和Blend工具会把此代码放入Default.html.js文件中。
最终输出内容
<object data="data:application/x-silverlight," type="application/x-silverlight-2-b1" width="100%" height="100%">
<param name="source" value="ClientBin/wpfhomeloadding.xap"/><!--要打开的XAML和XAP文件-->
<param name="onerror" value="onSilverlightError" /><!--Error事件时触发的方法-->
<param name="background" value="white" /><!--背景颜色-->
<!--如果客户端没有安装Silverlight出现的安装信息-->
<a href="http://go.microsoft.com/fwlink/?LinkID=108182" style="text-decoration: none;">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>
</a>
</object>