MSN Entertainment是用Silverlight开发的网站,是一个娱乐网站,涉及地图(BingMap)技术,图片展示技术,视频播放技术。它获取数据的方法比较特殊。使用StartupEventArgs来获取数据。
StartupEventArgs是获取作为 Silverlight 插件的 HTML 初始化的一部分传递的初始化参数,在Html或aspx写入。下面我们看一下
TwilightTourTestPage.html页面中
function LoadSL() {
var initialParams = "itinerary=http://entimg.msn.com/i/TwilightTour/NewMoon/Itinerary.xml";
if (null != StartWindow) {
initialParams += ",startwindow=" + StartWindow;
}
if (null != LocationIndex) {
initialParams += ",locationindex=" + LocationIndex;
}
if (null != PhotoIndex) {
initialParams += ",photoindex=" + PhotoIndex;
}
if (null != VideoIndex) {
initialParams += ",videoindex=" + VideoIndex;
}
if (null != MoreVideoIndex) {
initialParams += ",morevideoindex=" + MoreVideoIndex;
}
var holder = document.getElementById("SLHolder");
holder.innerHTML = '<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="1025" height="640">' +
'<param name="source" value="http://entimg.msn.com/i/TwilightTour/NewMoon/TwilightTourNewApology.xap"/>' +
'<param name="allowHtmlPopupWindow" value="true" />' +
'<param name="windowless" value="true" />' +
'<param name="background" value="#0b0704" />' +
'<param name="enableHtmlAccess" value="true" />' +
'<param name="minRuntimeVersion" value="3.0.40624.0" />' +
//'<param name="EnableGPUAcceleration" value="true" />' +
'<param name="initParams" value="' + initialParams + '" />' +
'<param name="autoUpgrade" value="true" />' +
'<param name="splashscreensource" value="http://entimg.msn.com/i/TwilightTour/NewMoon/SplashScreen.xaml"/>' +
'<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none"><img src="http://entimg.msn.com/i/TwilightTour/NewMoon/Images/nosilverlight.jpg" width="1025" height="640" alt="Get Microsoft Silverlight" style="border-style:none"/></a>' +
'</object>' +
'<iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;0px;border:0px"></iframe>';
}
在APP.XAML文件中
/// <summary>
/// 初始化数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e">获取作为 Silverlight 插件的 HTML 初始化的一部分传递的初始化参数</param>
private void Application_Startup(object sender, StartupEventArgs e)
{
string xmlURI = e.InitParams["itinerary"];
if (null == xmlURI)
{
throw new ArgumentNullException("The initial parameter 'itinerary' was not set");
}
MainPage page = new MainPage(xmlURI);
if (e.InitParams.Keys.Contains("startwindow"))
{
page.StartWindow = Convert.ToInt32(e.InitParams["startwindow"]);
}
if (e.InitParams.Keys.Contains("locationindex"))
{
page.LocationIndex = Convert.ToInt32(e.InitParams["locationindex"]);
}
if (e.InitParams.Keys.Contains("photoindex"))
{
page.PhotoIndex = Convert.ToInt32(e.InitParams["photoindex"]);
}
if (e.InitParams.Keys.Contains("videoindex"))
{
page.VideoIndex = Convert.ToInt32(e.InitParams["videoindex"]);
}
if (e.InitParams.Keys.Contains("morevideoindex"))
{
page.MoreVideoIndex = Convert.ToInt32(e.InitParams["morevideoindex"]);
}
base.RootVisual=(page);
}
大家可以看到,在Silverlight启动时读取Html页中的信息初始化参数。