3

При запуске приложения Silverlight 3 из браузера запуск занимает немного времени, но достаточно долго, чтобы быть заметным. Во время этого запуска фон окна, на котором размещается приложение, отображает уродливый белый цвет фона. При запуске в браузере у нас есть заставка, но это, конечно, загружается с помощью JavaScript. Как я могу получить заставку для работы вне браузера Silverlight 3? Или, если это невозможно, есть ли способ, по крайней мере, изменить цвет фона в окне?Как изменить цвет фона для загрузки приложения Silverlight 3 вне браузера?

ответ

2

Я действительно нашел способ сделать это. Ура! Большое количество кредитов относится к документу, найденному по адресу this page. Обратите внимание, что мы распространяем наше приложение на диске; эти инструкции не будут работать для приложения Silverlight, установленного пользователем из Интернета.

Оказалось, что пусковая установка Silverlight загружает HTML-страницу с самого начала. Когда приложение устанавливается, есть файл index.html. Страница содержит тег <object>, аналогичный тому, который используется для размещения Silverlight в Интернете.

К сожалению, этот <object> не поддерживает экран XAML или индикатор прогресса Silverlight, который, как я предполагаю, следует ожидать, так как 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> 
0

К сожалению, Silerlight 3 не дает возможности настроить его.

Смежные вопросы