【IT168技术文档】
在我们正常创建的silverlight Application项目之后,会在相应的web文件夹中生成两个名称相同但扩展名
分别为aspx和html和页面。
其中的aspx页面是我们所熟悉的控件声明方式的布局页,形如:
看着挺麻烦,但实际使用起来很简单,请看一下如下示例代码(对照上面的函数声明):<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <div style="height:100%;"> <asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/**.xap" MinimumVersion="2.0.30523" Width="100%" Height="100%" /> </div>
当然上面JS代码中的onSilverlightError是在创建silverlight项目中就已声明好的,这里就不多做介绍了。需要// 创建当前插件宿主元素(html)的引用. var parentElement = document.getElementById("silverlightControlHost"); // 对当前实例定义唯一标识变量. var conText = "context_2"; function createSilverlightByPluginID(pluginID) { Silverlight.createObject( "ClientBin/Silverlight_Js.xap", // 源属性值. parentElement, // Div标签宿主引用. pluginID, // 唯一插件ID值, 当页面调用被设置. { // 插件属性,此处属性设置优先于xaml中的设置 width:'400', height:'200', version:'2.0', isWindowless:'true', background:'aliceblue', framerate:'24', version:'2.0' }, { onError:onSilverlightError, // 错误处理事件绑定. onLoad:onLoad // 加载事件绑定,可用于多个实例. }, "pluginID=" + pluginID, // 初始化参数,可设置为 null 或 {} conText); }
说明的是onLoad的事件绑定,因为在这里我们可以对silverlight object做进行一步的操作如下:
function onLoad(plugin, userContext, sender) { $get('message').innerHTML = plugin.id + " : " + userContext + " : " + sender.toString(); // getHost()返回plug-in的引用 // 任何UIElement派生对象将可使用GetHost方法来返回Silverlight插件的实例. var plugin = sender.getHost(); // 获取初始化参数 InitParams 值,并使用逗号分割符分割该字符串. var params = plugin.initParams.split(","); // 显示参数 var msg = "Params: "; for (var i = 0; i < params.length; i++) { msg += params[i] + " "; } alert(msg); //只读属性 IsLoaded 是在 Onload 事件之前设置的,标识 Silverlight 插件是否已经加载。 alert(plugin.IsLoaded); if (plugin.IsVersionSupported("2.0")) { alert("当前版本支持 2.0"); } else { alert("当前版本不支持 2.0"); } }