Создавая приложения, мы пока что работали только с окном или классом UserControl - добавляли туда элементы управления и связывали с ними определенную логику. Однако фактически работа приложения Silverlight начинается не с запуска окна, а с класса Application.
При создании проекта Visual Studio автоматически генерирует файлы App.xaml и App.xaml.cs - эти файлы как раз и представляют приложение, а точнее класс App, который является производным от класса Application. Когда запускается приложение Silverlight, плагин создает экземпляр класса App. И затем уже начинает работать логика, определенная в классе App: создание окна приложения и т.д.
Логика работа приложения может быть представлена следующим образом:
Пользователь отправляет запрос серверу на получение определенной html-страницы
Браузер загружает плагин Silverlight, который потом загружает xap-файл приложения.
Плагин считывает из xap-пакета файл App.Manifest.xml и смотрит. какие сборки использует приложение. Затем создает среду выполнения Silverlight и загружает се используемые сборки приложения.
Затем плагин создает экземпляр класса приложения, определенного в файлах App.xaml и App.xaml.cs
Конструктор этого класса вызывает событие Startup
В обработчике этого события запускается визуальный объект приложения, например, MainPage.
Если первые шаги скрыты от нас, то последние два пункта мы можем увидеть, открыв файл App.xaml.cs:
using System; .................................. namespace TestApplication { 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) { this.RootVisual = new MainPage(); } private void Application_Exit(object sender, EventArgs e) { } .............................................................
В строке this.Startup += this.Application_Startup;
мы прикрепляем к событию запуска приложения обработчик Application_Startup,
в котором для свойства RootVisual устанавливаем объект окна. Если у нас в приложении определено несколько окон, то мы можем поменять MainPage
на любой другой класс, образованный от UserControl. Свойство RootVisual в данном случае представляет визуальный объект приложения -
то есть окно.
Кроме свойства RootVisual у класса Application можно выделить еще несколько свойств:
Host | Это свойство позволяет взаимодействовать с браузером и остальной частью html-страницы |
Resources | Представляет ресурсы приложения |
IsRunningOutOfBrowser | Показывает, является ли приложение внебраузерным или запускается внутри браузера |