【2012-08-15】ArcGIS Server for Silverlight【1】 Silverlight中使用配置文件方法
Microsoft Silverlight是微软所发展的 Web 前端应用程序开发解决方案,是微软丰富型互联网应用程序(Rich Internet Application)策略的主要应用程序开发平台之一,
以浏览器的外挂组件方式,提供 Web 应用程序中多媒体(含影音流与音效流)与高度交互性前端应用程序的解决方案。
那么我们知道既然SL作为浏览器的一个插件,运行在浏览器的前端。是没有办法直接访问后台数据的,注意我这里说的是“直接”。在程序开发过程中,有些变量需要进行外部配置,譬如我这里做ArcGIS Server For Silverlight开发。需要对加载的图层做一个动态的配
置,以便适应不同的应用系统。这个时候我们该如何解决呢?
好了,既然咱们不能直接访问,那我们就想一个间接的方式。
接着,实例说话。
新建一个空的Silverlight工程,木有的童鞋可以到附件中下载,在此不再赘述。
- 首先,我们来看XAP文件的承载窗体 Defalt.aspx 页面,在此我主要截取Body 代码
<!--Default.aspx --> <body> <form id="form1" runat="server"> <div> <asp:button ID="ConfigTest" runat="server" text="读取Config" OnClick="ConfigTest_Click" /> </div> <div id="silverlightControlHost"> <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> <param name="source" value="ClientBin/SilverlightConfig.xap"/> <param name="onError" value="onSilverlightError" /> <param name="background" value="white" /> <param name="minRuntimeVersion" value="4.0.50826.0" /> <param name="autoUpgrade" value="true" /> <param name="InitParams" value="vad = '变量测试'" /> <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none"> <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="获取 Microsoft Silverlight" style="border-style:none"/> </a> </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div> </form> </body>
- 注意这行代码 :<param name="InitParams" value="vad = '变量测试'" />
此处的InitParms变量可以到后台代码中获取
App.xaml.cs中
private void Application_Startup(object sender,StartupEventArgs e) { this.RootVisual = new MainPage(); _configurations = e.InitParams; MessageBox.Show("Sl_Init"); }
在这里我把需要传入的变量写死了,如果从后台动态获取该如何做呢,接下来我们修改 Body中代码
<body> <form id="form1" runat="server"> <div> <asp:button ID="ConfigTest" runat="server" text="读取Config" OnClick="ConfigTest_Click" /> </div> <div id="silverlightControlHost"> <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> <param name="source" value="ClientBin/SilverlightConfig.xap"/> <param name="onError" value="onSilverlightError" /> <param name="background" value="white" /> <param name="minRuntimeVersion" value="4.0.50826.0" /> <param name="autoUpgrade" value="true" /> <%-- <param name="InitParams" value="vad = '变量测试'" />--%> <asp:Literal ID="litInitParams" runat="server" /> </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div> </form> </body>
可以看到,body中唯一的变化就是
<asp:Literal ID="litInitParams" runat="server" />
那么在Default.aspx.cs 后台页面中可以动态的给litInitParams进行赋值,剩下的事情就简单了
Demo下载:http://pan.baidu.com/netdisk/singlepublic?fid=1148039_474589874