使用参数初始化Silverlight程序

在上一篇自定义Tile系统中,Tile系统的Uri是固定写死在程序中的,这样如果修改的话就会造成程序需要重新生成,那么如何可以动态改变Uri呢?本篇介绍的方法就是通过网页在Silverlight初始化前向其传递参数。

1、准备参数

因为Silverlight程序是需要以网页为载体,所以向Silverlight传递参数的工作就需要网页来完成了,这里就使用WebForm作为示例,使用web.config来存储参数(换成数据库也是一个道理)。

首先,在web.config文件的appSettings结点中添加配置服务器的地址和请求字符串的格式:

<configuration>
  <appSettings>
    <add key="server" value="localhost:58591"/>
    <add key="format" value="http://{0}/GetTile.ashx?type=china&amp;format=png&amp;quadkey={quadkey}"/>
  </appSettings>
</configuration>

2、读取参数

在后台中通过WebConfigurationManager来读取配置。

public string Server
{
    get
    {
        return WebConfigurationManager.AppSettings["server"];
    }
}

public string Format
{
    get
    {
        return WebConfigurationManager.AppSettings["format"];
    }
}

3、传递参数

这里是最核心的一步,那就是使用InitParams来向Silverlight程序传递参数,下面是前台的主要代码(其余内容参考复制VS自动生成的测试页的内容就可以了):

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
    <param name="source" value="ClientBin/MapOnBing_Silverlight.xap"/>
    <param name="onError" value="onSilverlightError" />
    <param name="background" value="white" />
    <param name="minRuntimeVersion" value="5.0.61118.0" />
    <param name="autoUpgrade" value="true" />
    <param name="InitParams" value="Server=<%=Server %>,Format=<%=Format %>" />
    <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.61118.0" style="text-decoration:none">
        <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="获取 Microsoft Silverlight" style="border-style:none"/>
    </a>
</object>

基本都是直接复制测试页的内容,关键的修改在于:

<param name="InitParams" value="Server=<%=Server %>,Format=<%=Format %>" />

通过这里就可以向Silverlight程序传递参数了。多个参数之间可以通过,逗号进行分割。

4、接收参数

在Silverlight程序中,找到App.xaml文件,打开其后台代码App.xaml.cs,找到Application_Startup事件处理方法,可以在这里使用StartupEventArgs的InitParams属性接收到前台传来的参数。下面是代码示例:

public partial class App : Application
{
    private void Application_Startup(object sender, StartupEventArgs e)
    {
        this.RootVisual = new MainPage();

        //读取网页中动态设置的地址
         if (e.InitParams.Count > 0)
        {
            //将读取到的配置暂存到静态变量中
              MainPage.Server = e.InitParams["Server"].ToString();
            MainPage.Format = e.InitParams["Format"].ToString();
        }
        else
        {
            //没有读取到配置时可以设置一个默认值
              MainPage.Server = "localhost";
            MainPage.Format = "http://{0}/GetTile.ashx?type=china&format=png&quadkey={quadkey}";
        }
    }
}

这样就从Silverlight程序中读取到了页面的参数。

5、使用参数

public partial class MainPage : UserControl
{
    public static string Server;
    public static string Format;
}
剩下的就是如何使用了,自由发挥吧~
posted @ 2013-04-27 13:54  不是豆豆  阅读(844)  评论(0编辑  收藏  举报
友情链接:迷途