【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>
看着挺麻烦,但实际使用起来很简单,请看一下如下示例代码(对照上面的函数声明):
// 创建当前插件宿主元素(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);
}
当然上面JS代码中的onSilverlightError是在创建silverlight项目中就已声明好的,这里就不多做介绍了。需要
说明的是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");
}
}