• 使用参数初始化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;
    }
    剩下的就是如何使用了,自由发挥吧~

    输了你,赢了世界又如何...
  • 相关阅读:
    kibana We couldn't activate monitoring
    学Redis这篇就够了!
    elasticsearch 官方监控文档 老版但很有用
    java dump 内存分析 elasticsearch Bulk异常引发的Elasticsearch内存泄漏
    Apache Beam实战指南 | 大数据管道(pipeline)设计及实践
    InnoDB一棵B+树可以存放多少行数据?
    函数编程真不好
    面向对象编程灾难
    可能是全网最好的MySQL重要知识点 | 面试必备
    终于有人把elasticsearch原理讲通了
  • 原文地址:https://www.cnblogs.com/xwgli/p/3046927.html
Copyright © 2020-2023  润新知