Спонсор: Microsoft
Опубликован: 01.03.2010 | Доступ: свободный | Студентов: 942 / 39 | Оценка: 4.38 / 4.31 | Длительность: 09:26:00
Лекция 7:

Дизайн и разработка приложений 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.

Атанас Маринов
Атанас Маринов
Болгария
Pavel Pelevin
Pavel Pelevin
Украина, Одесса