如何更改浏览器外加载的Silverlight 3应用程序的背景颜色? [英] How does one change the background color for a loading out-of-browser Silverlight 3 application?

查看:22
本文介绍了如何更改浏览器外加载的Silverlight 3应用程序的背景颜色?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在浏览器外运行我们的Silverlight 3应用程序时,启动需要一些时间,但时间足够长,足以引起注意。在此启动过程中,承载应用程序的窗口的背景显示为难看的白色背景色。当在浏览器中运行时,我们会看到一个闪屏,但这当然是通过JavaScript加载的。如何在浏览器外的Silverlight 3上使用闪屏?或者,如果不可能,是否有至少可以更改窗口背景颜色的方法?

推荐答案

我实际上找到了这样做的方法。万岁!许多功劳都归功于this page上的文档。请注意,我们在磁盘上分发应用程序;这些说明不适用于用户从Web安装的Silverlight应用程序。

原来Silverlight启动器在开始时加载一个HTML页面。在安装应用程序的位置,有一个index.html文件。该页包含一个<object>标记,类似于用于在Web上托管Silverlight的标记。

不幸的是,这个<object>不支持Silverlight闪屏XAML或进度指示器,我想这是意料之中的,因为XAP没有被下载。此外,设置页面或<object>的背景色似乎也不起作用。然而,事实证明,这只是因为Windows立即开始绘制插件,所以在绘制插件时会显示默认的窗口颜色。

要解决此问题,我将托管Silverlight的<div>visibility设置为hidden。然后,在HTML的底部,我添加了设置计时器的<script>。当计时器触发时,<div>visibility变为visible,Silverlight对象获得焦点。即使计时器被设置为1毫秒,这也允许HTML的宿主有机会完成网页的初始绘制。允许显示Silverlight下的任何内容。

这是我的整个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>
    <style type="text/css">
      html, body { height: 100%; overflow: hidden; background-color: black; }
      body { padding: 0; margin: 0; }

      #silverlightControlHost 
      { 
          height: 100%; visibility: hidden; position: absolute; 
      }

      #splashScreen
      {
          background-image: url('blah.png');
          background-repeat: no-repeat;
          width: 575px;
          height: 330px;
          top: 185px;
          left: 212px;
          color: white;
          position: absolute;
          font-family: Arial, Sans-Serif;
      }

      #loadingText
      {
          position: relative;
          top: 165px;
          text-align: center;
          font-size: 18px;
      }
    </style>
  </head>
  <body scroll="no">
    <div id="silverlightControlHost">
      <object id='_sl' data="data:application/x-silverlight," type="application/x-silverlight" width="100%" height="100%">
          <param name="source" value="offline://1931574666.localhost"/>
          <param name="background" value="Black"/>
          <param name="enableGPUAcceleration" value="True"/>
          <a href="http://go.microsoft.com/fwlink/?LinkID=124807" 
            style="text-decoration: none;">
              <img src="http://go.microsoft.com/fwlink/?LinkId=108181" 
                alt="Get Microsoft Silverlight" style="border-style: none"/>
          </a>
      </object>
      <iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe>
    </div>
    <div id="splashScreen">
        <div id="loadingText">Loading.  Please wait...</div>
    </div>
    <script>
        setTimeout(
            function() { 
                var ctrl = document.getElementById("silverlightControlHost");
                ctrl.style.visibility = "visible"; 
                document.getElementById('_sl').focus();
            },
            3000
        );
    </script>
  </body>
</html>

这篇关于如何更改浏览器外加载的Silverlight 3应用程序的背景颜色?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆