最近一直在做Silverlight插件,用来在页面上展示一些动画效果和视频播放,有关如何通过页面传递参数给Silverlight插件已经是一个老生常谈的话题了,不过我还是想在这里重新做下记录,方便新人学习,也方便自己日后查阅。 大家都知道,我们在页面上使用Silverlight插件一般都采用下面这种标记,当然你也可以在aspx页面中使用silverlight标记,不过这种方式用得很少,而且只限于在aspx页面上使用。 复制代码与flash插件类似,在页面上使用的也是一个object标记,我们可以通过已有的param参数来修改silverlight插件的一些属性,例如我们可以使用source来要求silverlight插件使用不同的xap文件,使用onError设置Silverlight加载出错时要执行的脚本,使用background参数设置silverlight插件的背景色,以及使用minRuntimeVersion参数要求客户端运行 Silverlight插件的最小版本号,使用autoUpgrade参数要求是否允许客户端的Silverlight浏览器插件自动升级等等。除此之外,你还可以自定义参数,我们可以使用initParams来命名参数,通过该参数我们可以同时传递多个值给 Silverlight,如下面的代码: 复制代码我们通过name/value对来设定initParams参数的值,如上例中就传递了三个不同的参数 programmer、blog和title。在服务器端如何接收这些值呢?看下面的示例,首先我们需要在App.xaml.cs文件的 Application_Startup事件中加载这些参数的值。 private void Application_Startup(object sender, StartupEventArgs e) { if ( e.InitParams != null ) { foreach ( var item in e.InitParams ) { this.Resources.Add( item.Key, item.Value ); } } this.RootVisual = new Page(); } 复制代码通过遍历InitParams,我们将参数以键-值对的形式加载到Silverlight全局资源集合中,最后一行代码是 Silverlight默认的代码。使用的时候我们可以通过参数名从Silverlight全局资源集合中取出相应的值,可以写成一个函数方便调用。 private string GetParam(string p) { if ( App.Current.Resources[p] != null ) { return App.Current.Resources[p].ToString(); } else { return string.Empty; } } 复制代码这样我们就可以轻松地获取到页面上传递过来的参数了。如果需要传递的参数过多,除了采用name/value对的形式外,我们还可以将参数写到xml里,如大家比较熟悉的playList,将视频播放要使用的参数写到playList xml里,然后在Application_Startup事件中解析xml并加载参数的值,使用xml的形式便于组合和管理参数。
在页面上传递参数给Silverlight插件
最新推荐文章于 2024-09-01 23:03:28 发布