Опубликован: 24.03.2009 | Доступ: свободный | Студентов: 2286 / 115 | Оценка: 4.24 / 3.93 | Длительность: 17:47:00
Лекция 13:

Элементы управления Silverlight в ASP.NET

< Лекция 12 || Лекция 13: 1234 || Лекция 14 >

Обеспечение доступа к HTML

С помощью свойства EnableHtmlAccess можно получить или задать для элемента управления Silverlight доступ к DOM HTML По умолчанию это свойство имеет значение true, что активирует доступ к DOM.

Для работы с DOM браузера в приложении используется пространство имен System.Windows.Browser. Это обеспечивает вам доступ к классам, таким как HtmlPage, используемым для запроса метаданных страницы, на которой располагается элемент управления Silverlight, а также возможность поиска определенного элемента в документе. Элементы HTML могут быть представлены в .NET классом HtmlElement (HTML-элемент).

Например, если в HTML имеется элемент <DIV> под именем testDiv, к нему можно обращаться и изменять из кода Silverlight следующим образом:

HtmlElement testDiv = HtmlPage.Document.GetElementById("testDiv"); 
testDiv.SetAttribute("innerText", "This is the testDiv");

Очень полезный класс - HtmlPage.BrowserInformation, он предоставляет метаданные, такие как Browser Version (Версия браузера), Sub Version (Дополнительная версия), Name (Имя), Platform (Платформа), User Agent (Агент пользователя) и включена поддержка cookie или нет.

Вот пример его содержимого во время выполнения:

? HtmlPage.BrowserInformation {System.Windows.Browser.BrowserInformation}
BrowserVersion: {4.0}
CookiesEnabled: true
Name: "Microsoft Internet Explorer"
Platform: "Win32" UserAgent: "Mozilla/4.0 (compatible; MSIE 7.0; 
Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; 
.NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022; MS-RTC LM 8)"
? Html Page.BrowserInformation.BrowserVersion {4.0}
Build: -1
Major: 4
Minor: 0 Revision: -1

Использование перерисовываемых областей

Другой наглядный пример, который поможет понять работу приложения Silverlight, - концепция перерисовываемой области (Redraw Region).Это визуальный индикатор, указывающий на части элемента управления Silverlight, которые перерисовываются. С помощью атрибута EnableRedrawRegions, задавая ему значение true вместо используемого по умолчанию false, можно включить эти маркеры. Итак, если вернуться к примеру с вращающейся линией и изменить разметку элемента управления ASP.NET, как показано в следующем коде, индикация перерисовываемых областей будет включена:

<asp:Silverlight ID="Xaml1" runat="server" 
      Source="~/ClientBin/ASP1.xap" Version="2.0" 
      Width = "100%" Height="100%" 
      EnableFrameRateCounter="true" EnableRedrawRegions="true" />

На рис. 13.3 показан создаваемый этим кодом эффект; перерисовываемые области выделены.

 Использование перерисовываемых областей

Рис. 13.3. Использование перерисовываемых областей

Как и с частотой кадров, эту возможность рекомендуется использовать только для отладки приложений и выключать при переходе к производственной эксплуатации.

Задание свойства PluginBackground

С помощью свойства PluginBackground (Фон подключаемого модуля) можно задавать цвет фона подключаемого модуля. Вспомним, что элемент управления ASP.NET выполняется на сервере и формирует разметку, что позволяет использовать свойства System.Color, включая некоторые системные цвета (такие как Window или ActiveBorder ), и также именованные системные цвета.

Как можно увидеть на рис. 13.4, Visual Studio IntelliSense позволяет выбирать системные и именованные цвета для фона подключаемого модуля.

 Задание цвета фона подключаемого модуля

Рис. 13.4. Задание цвета фона подключаемого модуля

На рис. 13.5 показано, как будет выглядеть содержимое Silverlight, когда свойству PluginBackground задано значение WindowFrame. Заметьте, что вам придется изменить фон элемента управления Grid в XAML, или он переопределит это значение. Если вы хотите, чтобы цвет фона подключаемого модуля распространялся на все элементы, можно просто удалить это свойство в других элементах.

 Использование системного цвета в качестве цвета фона подключаемого модуля

Рис. 13.5. Использование системного цвета в качестве цвета фона подключаемого модуля

Если сейчас взглянуть на исходный код страницы, можно увидеть, что значение параметра Background объекта Grid с именем LayoutRoot жестко задано в коде. В примере, представленном на рис. 13.5 для подключаемого модуля задан цвет фона #FF646464.

Управление установкой подключаемого модуля

Если в системе клиента не установлен Silverlight, при переходе на страницу, включающую содержимое Silverlight, пользователь увидит стандартный значок установки Silverlight, как показано на рис. 13.6.

 Стандартный значок установки

Рис. 13.6. Стандартный значок установки

Переопределить это поведение можно специальным HTML-шаблоном. Этот HTML будет отображаться вместо значка установки, поэтому он должен содержать ссылку на ресурс загрузки. Microsoft предлагает удобный URL, который определяет используемые браузер и ОС и обеспечивает соответствующий файл для загрузки. Этот URL - http://www.microsoft.com/silverlight/handlers/getsilverlight.ashx?v=2.0.

Итак, изменить схему установки для Silverlight можно с помощью дочернего тега <PluginNotInstalledTemplate> (Шаблон 'подключаемый модуль не установлен') элемента управления ASP.NET Silverlight. Рассмотрим пример:

<asp:Silverlight ID="Xaml1" runat="server" 
     Source="~/ClientBin/ASP1.xap" Version = "2.0" 
     Width="100%" Height="100%" PluginBackground = "WindowFrame" > 
  <PluginNotInstalledTemplate> 
    <a href="http://www.microsoft.com/silverlight/handlers/getsilverlight.ashx?v=2.0"> 
       If you want to install the Silverlight control, you can click here! 1
    </a> 
  </PluginNotInstalledTemplate> 
</asp:Silverlight>

Здесь используется гиперссылка (тег <a> ) на вышеупомянутый URL по которому располагается элемент управления Silverlight, и также задается некоторый доброжелательный текст. Конечно, можно предоставить пользователям что-то намного более вычурное, но здесь мы просто демонстрируем возможности. Попадая на вашу страницу, пользователь, не имеющий Silverlight, будет видеть содержимое, которое покажет, как установить Silverlight. Если Silverlight у пользователя установлен, он будет видеть Silverlight-содержимое.

< Лекция 12 || Лекция 13: 1234 || Лекция 14 >