Дизайн и разработка приложений Silverlight в Visual Studio 2008
Файлы MainPage.xaml и MainPage.xaml.cs
Файл MainPage.xaml является для приложения Silverlight интерфейсом по умолчанию. При компиляции вместе с ассоциированным с ним файлом выделенного кода он формирует класс MainPage, экземпляр которого будет объектом MainPage. В качестве значения свойства RootVisual приложения был задан новый объект MainPage, что позволило данному классу быть интерфейсом по умолчанию. Вот XAML, формируемый по умолчанию для MainPage.xaml:
<UserControl x:Class="SilverlightApplication1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
<Grid x:Name="LayoutRoot">
</Grid>
</UserControl>Прежде всего, стоит обратить внимание, что контейнером XAML является UserControl. При построении .NET-приложений Silverlight в Visual Studio, фактически, создаются элементы управления, которые компилируются в DLL и помещаются в XAP, который затем открывает и исполняет Silverlight. В данном случае, экземпляр этого UserControl называется SilverlightApplication1.MainPage - это пространство имен и MainPage - имя класса из этого пространства имен.
Объявления xmlns и xmlns:x задают пространство имен по умолчанию и дополнительное пространство имен, соответственно, которые должны использоваться для проверки корректности XAML. Ранее был рассмотрен атрибут x:Class, используемый для описания класса этого элемента управления, который также является примером применения дополнительного пространства имен, запись которого начинается с префикса x:.
Наконец, ширине и высоте присвоены значения по умолчанию: 640 x 480.
Далее идет корневой Grid. В Silverlight 3 корневым элементом должен быть Container (Контейнер), которым в данном случае является Grid под именем LayoutRoot. Соответственно, все элементы дизайна элемента управления будут дочерними элементами этого узла.
И его код code-behind:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace SilverlightApplication1
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
}
}Это стандартный класс MainPage, унаследованный от типа UserControl. В конструкторе класса выполняется общая настройка с помощью вызова метода InitializeComponent().
Веб-проект
Кроме проекта элемента управления, шаблон создает веб-проект, в котором размещается приложение Silverlight. Этот веб-проект включает два ASPX-файла: Default.aspx, являющийся пустой Веб-формой, на базе которой можно построить свое приложение; и тестовую страницу <ИмяПриложения>TestPage.aspx (например, SilverlightApplication1TestPage.aspx ), которая содержит все необходимое для запуска Silverlight из ASP.NET.
Хотя Silverlight не имеет никаких зависимостей на стороне сервера, ASP.NET предлагает элементы управления, обеспечивающие возможность создания JavaScript и HTML на стороне клиента, необходимых для размещения Silverlight в браузере.
Файл TestPage включает ссылки на эти элементы управления. Далее приведена участок разметки для ASPX-файла в части включения объекта Silverlight на страницу:
<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;
}
…
</script>
<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.40624.0" />
<param
name="autoUpgrade"
value="true" />
<a href=
"http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0"
style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181"
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>На этой странице используются два элемента управления ASP.NET. Первый - ScriptManager (диспетчер сценариев), который является превосходным средством управления загрузкой и использованием всех необходимых библиотек JavaScript в соответствующее время и в соответствующем месте.
Второй - элемент управления Silverlight. Обратите внимание, что в качестве параметра он принимает рассмотренный выше XAP. Этот элемент управления будет формировать правильный HTML-код для создания <object>, представляющего Silverlight в браузере.
Заключение
В данном разделе было рассмотрено проектирование приложений Silverlight в среде Visual Studio 2008 и предлагаемые студией различные инструменты и шаблоны для разработки приложений Silverlight с использованием языков программирования .NET. Был детально разобран проект, созданный на базе стандартных шаблонов Silverlight, рассмотрены все его файлы и то, как он используется для разработки и развертывания приложения Silverlight.
Далее будут более глубоко рассмотрены функциональные возможности, доступные в .NET Framework, включая создание собственных элементов управления, работу с сетью и обмен информацией, данные и XML, динамические языки программирования и серверные элементы управления ASP.NET.