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

Дизайн и разработка приложений Silverlight в Visual Studio 2008

Свойства проекта Silverlight

Созданный шаблоном базовый проект содержит ряд файлов, включая манифест приложения, XAML-файл приложения с файлом выделенного кода, страницу-пример с файлом выделенного кода, информационный файл сборки и некоторые ссылки. В данном разделе представлены некоторые сложные моменты проекта Silverlight. Лучше всего начать с рассмотрения свойств проекта. Для этого необходимо щелкнуть правой кнопкой мыши проект SilverlightApplication1 в обозревателе решения и выбрать Properties. Появится диалоговое окно Project Properties (рис. 7.4).

Свойства проекта Silverlight

увеличить изображение
Рис. 7.4. Свойства проекта Silverlight

Опции Assembly Name (Имя сборки) по умолчанию присваивается имя проекта. Это имя будет использоваться при компиляции приложения в DLL.

Опции Default Namespace (Пространство имен по умолчанию) по умолчанию также присваивается имя проекта. Если вы ссылаетесь на классы из этого проекта, их имена начинаются с имени этого пространства имен.

Опции Startup Object (Объект, с которого начинается запуск проекта) по умолчанию присваивается имя проекта с .App в конце (т.е. SilverlightApplication1.App ). Это класс в приложении, который будет выполняться первым. Шаблон определяет этот класс в App.xaml и связанный с ним файл выделенного кода App.xaml.cs.

По щелчку кнопки Assembly Information (сведения о сборке) будет вызван диалог Assembly Information (рис. 7.5). В нем можно определить метаданные своей сборки, включая Title (название), Description (описание), Copyright (авторское право), Trademark (торговая марка), Assembly Version (версия сборки), File Version (версия файла), GUID (код), Neutral Language (язык). Вся эта информация хранится в файле AssemblyInfo.cs и компилируется в приложение Silverlight.

Задание сведений о сборке

Рис. 7.5. Задание сведений о сборке

Также доступны опции кэширования некоторых дополнительных сборок среды, позволяющие сократить размер приложения за счет того, что они не встраиваются в него, и опция формирования файла манифеста приложения. XAP файл - это обыкновенный ZIP архив, в котором содержатся файлы сборки, манифеста, шрифты, и т.д.

Есть опция для настройки работы приложения Silverlight вне браузера. Об этом подробнее в лекции 3 "Работа вне браузера".

Наконец, предлагается опция для создания самого файла манифеста Silverlight. Этот файл содержит данные по всем элементам пакета, которые будут использоваться приложением Silverlight, таким как дополнительные компоненты или элементы управления, которые необходимы для выполнения приложения.

Файлы проекта

Первой папкой проекта является папка Properties, содержащая файлы свойств: AppManifest.xml и AssemblyInfo.cs. AppManifest.xml создается при компиляции проекта. Если проект имеет какие-либо зависимости во время выполнения, такие как внешние элементы управления, ссылки на них размещаются в этом файле. Файл Assemblyinfo.cs содержит метаданные, которые должны быть скомпилированы в вашу DLL, заданную в диалоговом окне Assembly Information (рис. 7.5). Код в этом файле можно редактировать вручную, но рекомендуется использовать для этого диалоговое окно.

Ссылки проекта (references)

Папка References содержит ссылки на ряд сборок. Это основные сборки Silverlight, которые необходимы для запуска приложения.

  • mscorlib. В сборку mscorlib входят основные типы, используемые приложениями Silverlight.
  • system. В сборку system входят многие высокоуровневые типы, используемые для разработки и отладки приложений Silverlight, такие как компилятор и классы для отладки и диагностики.
  • System.Core. Сборка System.Core включает основные элементы управления и классы Silverlight.
  • System.Net. Сборка System.Net включает библиотеки .NET, необходимые для сетевого взаимодействия.
  • System.Windows. В сборку System.Windows входят основные функциональные возможности Windows и Silverlight, включая элементы управления Silverlight.
  • System.Windows.Browser. В сборку System.Windows.Browser входят библиотеки, используемые для взаимодействия с браузером.
  • System.Xml. В сборку System.Xml входят библиотеки Silverlight для обработки XML.

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

Файлы App.xaml и App.xaml.cs

Файл App.xaml создается интегрированной средой разработки (IDE) при создании проекта Silverlight по шаблону. Обычно он используется для хранения общей информации всего приложения. App.xaml содержит объявления, определяющие поведение приложения. Вот пример App.xaml, создаваемого шаблоном по умолчанию:

<Application 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      x:Class="SilverlightApplication1.App">
    <Application.Resources>
        
    </Application.Resources>
</Application>

Первое, на что следует обратить внимание, - атрибут x:Class, который определяет имя класса, в который будет скомпилирован этот XAML и связанный с ним файл выделенного кода. Как видно, в данном случае это SilverlightApplication1.App, которое было задано на странице Project Properties (из рис. 7.4) как объект запуска для этого приложения. Таким образом, функциональность запуска проекта Silverlight находится в этом классе.

С помощью события Startup (Запуск) можно задать метод-обработчик, который будет выполняться при запуске приложения. Для этого просто указывается имя необходимой функции, описанной в файле выделенного кода. Также в событии Exit (Выход) можно задать имя метода-обработчика из файла выделенного кода, который будет выполняться при завершении приложения. Далее приведен код стандартного файла выделенного кода, созданного шаблоном:

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 App : Application
  {
    public App()
    {
      this.Startup += this.Application_Startup;
      this.Exit += this.Application_Exit;
      this.UnhandledException += this.Application_UnhandledException;

      InitializeComponent();
    }

    private void Application_Startup(object sender, StartupEventArgs e)
    {
       // Загружается основной элемент управления. По умолчанию - это MainPage.xaml
       this.RootVisual = new MainPage();
    }

    private void Application_Exit(object sender, EventArgs e)
    {
    }
    private void Application_UnhandledException(object sender, 
                                               ApplicationUnhandledExceptionEventArgs e)
    {
      if (!System.Diagnostics.Debugger.IsAttached)
      {
        e.Handled = true;
        Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });
      }
    }
    private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)
    {
      try
      {
        string errorMsg = e.ExceptionObject.Message + 
                            e.ExceptionObject.StackTrace;
        errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");

        System.Windows.Browser.HtmlPage.Window.Eval
         ("throw new Error(\"Unhandled Error in Silverlight Application " + errorMsg + "\");");
      }
      catch (Exception)
      {
      }
    }
  }
}

Сначала рассмотрим конструктор (это функция с именем, аналогичным имени модуля кода, в данном случае это App() ). Он используется для подключения методов Application_Startup и Application_Exit. Это уже было сделано в файле XAML, поэтому нет необходимости делать это в коде. Однако это демонстрирует замечательную гибкость модели XAML/выделенный код, которая позволяет подключать события во время разработки (задавая их в XAML) или во время выполнения (объявляя их в коде).

Далее можно проверить методы Application_Startup и Application_Exit. Обратите внимание, что они принимают два параметра: объект, формирующий событие, и объект аргументов. Такая сигнатура методов очень распространена в приложениях Silverlight.

В методе Application_Startup происходит присвоение свойству this.RootVisual (корневой визуальный элемент) приложения нового объекта MainPage (Главная страница). Тем самым объявляется, что элемент объекта Page является первым экраном приложения Silverlight. Если предполагается использовать другие экраны, объявленные в XAML, они будут запускаться уже из объекта MainPage. Объект MainPage является XAML-объектом по умолчанию, создаваемым шаблоном для размещения пользовательского интерфейса приложения Silverlight.