从真正的项目中学习Silverlight(MSN Entertainment项目源码下载)

  

  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页中的信息初始化参数。

演示地址:http://msntwilight.com/

项目源代码地址:https://files.cnblogs.com/salam/TwilightTour.rar

原文地址:https://www.cnblogs.com/salam/p/1818943.html