Смущен тем, как Silverlight попадает на страницу - PullRequest
3 голосов
/ 12 ноября 2010

Я потратил некоторое время на просмотр всех примеров на http://www.silverlight.net/learn/quickstarts/

И я все еще довольно растерян из-за Silverlight.Я не совсем понимаю, как это происходит на сайте.Например ... есть ли какое-нибудь учебное пособие, показывающее, как создать веб-страницу HTML, которая извлекает страницу Silverlight и отображает ее, чтобы вы могли работать с ней?

До сих пор мне приходилось работать только с сгенерированными по умолчанию файлами .aspx, которые мне мало что говорят.И даже использование стандартного генератора 'MVC Application' из Visual Studio немного мутновато и запутано.

Я провел несколько поисков в Google и осмотрел ссылки, но, возможно, я просто тупой.Я просто не понимаю, где все это «объединяется», так сказать.Есть намеки?Или я просто за пределами обучения?

Ответы [ 3 ]

6 голосов
/ 12 ноября 2010

Краткий ответ: вы включаете приложения Silverlight в веб-страницу, используя тег объекта в HTML. В этом случае веб-браузер отвечает за загрузку приложения silverlight, аналогично загрузке приложений Flash. Посмотрите эти quickstarts для более подробного объяснения. Не расстраивайтесь, это новая концепция для многих разработчиков:).

Вот пример приложения Silverlight, встроенного в веб-страницу:

<body>
   <form id="form1" runat="server" style="height:100%">
     <div id="silverlightControlHost">
       <object data="data:application/x-silverlight-2," 
               type="application/x-silverlight-2" 
               width="100%" height="100%">
          <param name="source" value="HelloWorld.xap"/>
          <param name="onError" value="onSilverlightError" />
          <param name="background" value="white" />
          <param name="minRuntimeVersion" value="4.0.50401.0" />
          <param name="autoUpgrade" value="true" />
          <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50401.0" 
                   style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=161376" 
                   alt="Get Microsoft Silverlight" style="border-style:none"/>
          </a>
       </object>
       <iframe id="_sl_historyFrame"
               style="visibility:hidden;height:0px;width:0px;border:0px">
       </iframe>
     </div>
   </form>
</body>
2 голосов
/ 12 ноября 2010

Здесь - руководство Microsoft по встраиванию Silverlight в HTML..Xap является эквивалентом Jnlp для современных апплетов и .swf для Flash.Параметры могут контролировать код, а также могут быть обновлены через Javascript.Плагин silverlight в браузере выполняет код приложения.HTML просто держит его на месте.

2 голосов
/ 12 ноября 2010

Просто создайте приложение Silverlight и выберите его для создания приложения Silverlight на веб-сайте.

Это создаст проект, который генерирует страницу, содержащую объект silverlight, который загружает файл xap на клиенте.

Файл xap находится в ClientBin, файл xap - это приложение Silverlight.

Пока вы указываете источник объекта <param> на путь к файлу xap, он должен загружать соответствующее приложение Silverlight.

alt text

Проект, который он создает:

alt text

Пример страницы aspx:

<%@ Page Language="C#" AutoEventWireup="true" %>

<!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 runat="server">
    <title>SilverlightApplication1</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">
        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">
        <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
          <param name="source" value="ClientBin/SilverlightApplication1.xap"/>
          <param name="onError" value="onSilverlightError" />
          <param name="background" value="white" />
          <param name="minRuntimeVersion" value="3.0.40818.0" />
          <param name="autoUpgrade" value="true" />
          <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>
        </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
    </form>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...