代码改变世界

Silverlight Object 标签属性介绍、初始化参数的设置和获取、客户端系统信息获取

2010-02-15 19:02  闫妍  阅读(415)  评论(0编辑  收藏  举报

HTML元素属性介绍

Silverlight 作为网页的一部分宿主在浏览器当中,使用 HTML 元素的形式声明的。

当你在新建一个Silverlight项目的时候,VS会为你建立一个用于测试的HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

<head>
    <title>SlSample1</title>
    <style type="text/css">
    html, body {
        height: 100%;
        overflow: auto;
    }
    body {
        padding: 0;
        margin: 0;
    }
    #silverlightControlHost {
        height: 100%;
        text-align:center;
    }
    </style>
    <script type="text/javascript" src="Silverlight.js"></script>
    <script type="text/javascript">
        //js用来显示SL错误的脚本,这里可以自定义
        function onSilverlightError(sender, args) {
            var appSource = "";
            if (sender != null && sender != 0) {
              appSource = sender.getHost().Source;
            }
            
            var errorType = args.ErrorType;
            var iErrorCode = args.ErrorCode;

            if (errorType == "ImageError" || errorType == "MediaError") {
              return;
            }

            var errMsg = "Unhandled Error in Silverlight Application " +  appSource + "\n" ;

            errMsg += "Code: "+ iErrorCode + "    \n";
            errMsg += "Category: " + errorType + "       \n";
            errMsg += "Message: " + args.ErrorMessage + "     \n";

            if (errorType == "ParserError") {
                errMsg += "File: " + args.xamlFile + "     \n";
                errMsg += "Line: " + args.lineNumber + "     \n";
                errMsg += "Position: " + args.charPosition + "     \n";
            }
            else if (errorType == "RuntimeError") {           
                if (args.lineNumber != 0) {
                    errMsg += "Line: " + args.lineNumber + "     \n";
                    errMsg += "Position: " +  args.charPosition + "     \n";
                }
                errMsg += "MethodName: " + args.methodName + "     \n";
            }

            throw new Error(errMsg);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server" style="height:100%">
    <div id="silverlightControlHost">  -- Silverlight插件的容器
        <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
          <param name="source" value="ClientBin/SlSample1.xap"/>  ----Silverlight文件的位置,相对和绝对路径均可
          <param name="onError" value="onSilverlightError" />  -- 设置使用js来显示Sl的错误信息这里设置了一个方法名称,定义在上面
          <param name="background" value="white" />   --背景色
          <param name="minRuntimeVersion" value="3.0.40818.0" />  -- 最低可运行的版本
          <param name="autoUpgrade" value="true" />  -- SL是否可以自动更新
          <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40818.0" style="text-decoration:none">
               <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
          </a>  -- SL的下载地址,这里可以指向一个局域网内的服务器,提供更快的下载速度
        </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
    </form>
</body>
</html>
除此之外还有一下几个属性比较重要
          <param name="enableHtmlAccess" value="true" />  -- 开启访问Javascript 和Dom的能力
          <param name="enableGPUAcceleration" value="true" />  -- 开启GPU加速
          <param name="initParams" value="id=12345,name=你好" />  --初始化参数的属性

获取初始化参数和网页参数

获取通过initParams 属性初始化的参数

App.xaml.cs文件

private void Application_Startup(object sender, StartupEventArgs e)
 {
     string para1 = e.InitParams.Keys["id"];
     string para2 = e.InitParams.Keys["name"];
     this.RootVisual = new MainPage(para1,para2);
 }

 

获取URL传递的参数

 

foreach (String key in HtmlPage.Document.QueryString.Keys)
            {
                //添í加ó到?ListBox中D
                listBox1.Items.Add(new TextBlock()
                {
                    Text = String.Format(
                        "URL参?数y:o{0} = {1}", key,
                        HtmlPage.Document.QueryString[key])
                });
            }

 

任何XAML中获取initParams的方法

App.Current.Host.InitParams["id"];

 

获取客户端系统信息

 

          using System.Windows.Browser;

            //请先引用System.Windows.Browser;
            BrowserInformation browserInfo
                = HtmlPage.BrowserInformation;
            tbkName.Text = string.Format("Name: {0}"
                , browserInfo.Name);
            tbkVer.Text = string.Format("BrowserVersion: {0}"
                , browserInfo.BrowserVersion);
            tbkPlatform.Text = string.Format("Platform: {0}"
                , browserInfo.Platform);
            tbkUserAgent.Text = string.Format("UserAgent: {0}"
                , browserInfo.UserAgent);