И наконец, последний "ингредиент" развертывания — тестовая страница HTML. Она является точкой входа в содержимое Silverlight. Посетитель запрашивает страницу с помощью браузера. В изолированном решении Silverlight программа Visual Studio присваивает файлу тестовой страницы имя TestPage.html. В проекте, хостируемом страницей ASP.NET, тестовая страница получает имя на основе имени проекта. Чаще всего ее переименовывают, присвоив более информативное имя.
Тестовая страница HTML не содержит разметки или кода Silverlight. Вместо этого в ней с помощью кода JavaScript определяется область содержимого для надстройки Silverlight. По этой причине в браузере должна быть включена поддержка JavaScript, иначе браузер не сможет вывести содержимое Silverlight на экран. Ниже приведена сокращенная версия тестовой страницы HTML, в которой, однако, сохранены все существенные компоненты.
.<html xmlns="http://www.w3.org/1999/xhtml" >
<!— saved from url=(0014)about:internet —>
<head>
<title>TecroBaH страница проекта Silverlight</title> <style type="text/css">
</style>
<script type="text/javascript">
</script>
</head>
<body>
<form id="forml" runat="server" style="height:100%"> <!— Здесь выводится содержимое Silverlight —> <div id="silverlightControlHost">
<object data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%"
he ight="10 0 %">
<param name="source"
value="SilverlightApplicationl.xap"/> <param name="onerror" value="onSilverlightError" /> <param name="background" value="white" /> <param name=
"minRuntimeVersion" value="3. 0.40624 .0" "/> <param name="autoUpgrade" value="true" /> <a href=
"http: / /go .microsoft. com/fwlink4>
/?LinkID=149156&v=3.0.40624.0" style="text-decoration: none"> <img src=
"http://go.microsoft.com/fwlink/?LinkId=108181" alt="ycTaHOBMTe надстройку Microsoft Silverlight" style="border-style: none"/>
</a> </object>
<iframe id="_sl_historyFrame"
style=’visibility:hidden;
height: 0;width: 0;border: Opx’x/iframe>
</div> </form> </body> </html>
Ключевой компонент разметки — элемент <fdiv>, отмеченный полужирным шрифтом. Он представляет область содержимого Silverlight и содержит элемент <object>, который загружает надстройку Silverlight. Элемент <object> содержит четыре ключевых атрибута: data (идентификация объекта как области содержимого Silverlight), type (задание требуемой версии Silverlight, вторая или выше), height (высота области содержимого Silverlight) и width (ширина области содержимого).
Изменение тестовой страницы
При использовании сайта ASP.NET тестовая страница генерируется только один раз при создании сайта. В результате страницу HTML можно изменять, не беспокоясь о том, что изменения будут переопределены. При использовании изолированного проекта без сайта ASP.NET программа Visual Studio генерирует тестовую страницу при каждом запуске проекта. В результате этого любые изменения тестовой страницы отбрасываются. Если нужно настраивать тестовую страницу, легче всего создать ее для проекта вручную. Для этого выполните следующие операции.
1. Выполните проект, как минимум, один раз, чтобы Visual Studio сгенерировала тестовую страницу.
2. Щелкните на пиктограмме Show All Files (Показать все файлы), расположенной в верхней части окна Solution Explorer (Проводник решений).
3. В окне Solution Explorer разверните папку Bin\Debug.
4. Найдите файл TestPage. html, щелкните на нем правой кнопкой мыши и выберите команду Сору (Копировать). Щелкните правой кнопкой мыши на папке BinXDebug и выберите команду Paste (Вставить). Копия будет служить пользовательской тестовой страницей. Щелкните правой кнопкой мыши на новом файле и выберите команду Rename (Переименовать). Введите произвольное имя.
5. Чтобы сделать пользовательскую тестовую страницу частью проекта, щелкните на файле правой кнопкой мыши и выберите команду Include in Project (Включить в проект).
6. Чтобы направить Visual Studio на пользовательскую тестовую страницу при выполнении проекта, щелкните на файле тестовой страницы правой кнопкой мыши и выберите команду Set As Start Page (Назначить стартовой страницей).
Примечание. Будьте осторожны при модификации, казалось бы, тривиальных компонентов тестовой страницы HTML. Некоторые из них необходимы для обеспечения совместимости с браузерами определенных типов. Например, запятая в конце атрибута data элемента <object> обеспечивает совместимость с браузерами Firefox. Невидимый элемент <iframe> в конце элемента <div> позволяет выполнять навигацию в браузерах Safari. Фактически, вы можете модифицировать только значения ширины и высоты, список параметров и альтернативное содержимое.
Задание размеров области содержимого Silverlight
По умолчанию области содержимого Silverlight присваивается ширина и высота 100%, в результате чего содержимое занимает все доступное пространство в окне браузера. Размер области содержимого можно зафиксировать, жестко закодировав значения ширины и высоты в пикселях (обычно так не делают, поскольку такое ограничение слишком сильное). Можно также расположить элемент <div>, содержащий область, в ограниченном месте страницы, например в ячейке таблицы, в другом элементе с фиксированными размерами или между другими элементами <div> в многоколоночной структуре.
Страница XAML может содержать жестко закодированные размеры, даже когда установленные по умолчанию размеры тестовой страницы ограничивают область содержимого Silverlight доступным пространством в окне браузера. Программа Visual Studio по умолчанию присваивает каждой новой странице Silverlight ширину 4 00рх и высоту ЗООрх путем установки атрибутов Height и Width корневого элемента UserControl. Если окно браузера больше, чем жестко закодированные размеры страницы, дополнительное пространство не используется. Если же оно меньше, часть страницы может оказаться за пределами видимой области окна.
Жесткое кодирование размеров полезно при создании сложных графических структур с абсолютным позиционированием и минимальной гибкостью. В противном случае атрибуты Width и Height лучше удалить из открывающего дескриптора <UserControl>. Тогда размеры страницы совпадут с размерами области содержимого Silverlight, а размеры области содержимого будут определяться окном браузера. В результате содержимое Silverlight всегда будет вписываться в текущее доступное пространство.
Чтобы увидеть фактические размеры области содержимого Silverlight, добавьте в нее рамку с помощью простого правила в дескрипторе <div>, например, следующим образом.
<div id="silverlightControlHost" style="border: lpx red solid">
Расширяемые и масштабируемые страницы Silverlight рассматриваются в главе 3 при обсуждении структуры страницы.
Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.