Элементы управления Silverlight в ASP.NET
Обеспечение доступа к 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 показан создаваемый этим кодом эффект; перерисовываемые области выделены.
Как и с частотой кадров, эту возможность рекомендуется использовать только для отладки приложений и выключать при переходе к производственной эксплуатации.
Задание свойства PluginBackground
С помощью свойства PluginBackground (Фон подключаемого модуля) можно задавать цвет фона подключаемого модуля. Вспомним, что элемент управления ASP.NET выполняется на сервере и формирует разметку, что позволяет использовать свойства System.Color, включая некоторые системные цвета (такие как Window или ActiveBorder ), и также именованные системные цвета.
Как можно увидеть на рис. 13.4, Visual Studio IntelliSense позволяет выбирать системные и именованные цвета для фона подключаемого модуля.
На рис. 13.5 показано, как будет выглядеть содержимое Silverlight, когда свойству PluginBackground задано значение WindowFrame. Заметьте, что вам придется изменить фон элемента управления Grid в XAML, или он переопределит это значение. Если вы хотите, чтобы цвет фона подключаемого модуля распространялся на все элементы, можно просто удалить это свойство в других элементах.
Если сейчас взглянуть на исходный код страницы, можно увидеть, что значение параметра Background объекта Grid с именем LayoutRoot жестко задано в коде. В примере, представленном на рис. 13.5 для подключаемого модуля задан цвет фона #FF646464.
Управление установкой подключаемого модуля
Если в системе клиента не установлен Silverlight, при переходе на страницу, включающую содержимое Silverlight, пользователь увидит стандартный значок установки Silverlight, как показано на рис. 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-содержимое.