silverlight - 如何更改浏览器外加载的 Silverlight 3 应用程序的背景颜色?

标签 silverlight silverlight-3.0 startup splash-screen out-of-browser

在浏览器外运行我们的 Silverlight 3 应用程序时,启动需要一点时间,但它足够长以引起注意。在此启动期间,托管应用程序的窗口背景显示难看的白色背景色。在浏览器中运行时,我们有一个启动画面,但它当然是通过 JavaScript 加载的。如何让启动画面在浏览器外的 Silverlight 3 上工作?或者,如果那不可能,有没有办法至少可以更改窗口的背景颜色?

最佳答案

我实际上找到了一种方法来做到这一点。万岁!在this page 中找到的文件有很大的功劳。 .请注意,我们正在磁盘上分发我们的应用程序;这些说明不适用于用户从 Web 安装的 Silverlight 应用程序。

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

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

为了解决这个问题,我设置了 visibility<div>将 Silverlight 托管到 hidden .然后,在 HTML 的底部,我添加了一个 <script>。设置一个计时器。当计时器触发时,visibility<div>更改为 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 - 如何更改浏览器外加载的 Silverlight 3 应用程序的背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2504687/

相关文章:

python - 如何悄悄启动Python REPL?

.net - 如何使 Silverlight UserControl 成为内容容器?

c# - Silverlight 项目编译失败

c# - 在现有应用程序中使用 Silverlight

silverlight - FindElementsInHostCoordinates 相对于控制空间不是整个页面

Eclipse 在启动时卡住 - 在加载工作区之前

c# - 将 Web 应用程序部署到 IIS 时出现 "CommunicationException was unhandled by user code"

.net - 什么时候应该创建Control的子类,什么时候应该创建Panel的子类?

silverlight-3.0 - SketchFlow 原型(prototype)字体不显示

c# - 在 Startup - Asp.Net Core 中调用 AddTransient 中的异步方法