Главная » Silverlight » Добавление кода обработки события

0

Обработчики событий подключаются к элементам страницы с помощью атрибутов. Такой же подход используется в WPF, ASP.NET и JavaScript. Например, элемент Button предоставляет событие Click, которое генерируется при щелчке на элементе кнопкой мыши или нажатии клавиши <Enter>, когда элемент активен. Чтобы задать реакцию на событие, нужно добавить атрибут Click в элемент Button и присвоить атрибуту имя метода, определенного в коде.

<Button x:Name="cmdClickMe" Click="cmdClickMe_Click:" Content="II^KHHTe здесь!" Margin="5"x/Button>

Совет. Методу обработки события рекомендуется присваивать имя в форме ИмяЭлементаИмяСобытия. Если элемент не имеет определенного имени (например, когда к нему не нужно обращаться в других местах кода), присвойте ему имя, исходя из его назначения.

В следующем примере предполагается, что элемент имеет имя cmdClickMe, а собы­тие — Click. Приведенный метод обработки события расположен в файле MainPage.

xaml.cs.

private void cmdClickMe_Click(object sender, RoutedEventArgs e)

{

lblMessage.Text = "До свидания!";

}

В Visual Studio 2010 создать обработчик события можно, дважды щелкнув на эле­менте на графической панели или сначала щелкнув на кнопке Events (События) в окне Properties (Свойства), а затем — на соответствующем событии.

В рабочей среде Visual Studio 2008 неприменим ни один из этих методов. Однако когда обработчик события существует, его можно быстро подключить к событию с помо­щью окна подсказки. Для этого введите имя атрибута и знак равенства. В этот момент на экране появится окно подсказки, содержащее список всех методов, которые можно подключить к событию (рис. 1.5). Двойные кавычки добавляются автоматически при вводе знака равенства. Выберите нужное событие.

Чтобы создать и подключить обработчик события в одной операции, добавьте атри­бут события и выберите в окне подсказки элемент <New Event Handler> (<Новый обработчик события>).

Совет. Для быстрого перехода от кода XAML к коду обработчика события щелкните правой кнопкой мыши на атрибуте события в разметке и выберите команду Navigate to Event Handler (Перейти к обработчику события). При использовании этого способа вам не придется искать обработчик в коде.

Подключить событие к обработчику можно также с помощью кода. Это делает­ся в конструкторе страницы после вызова метода InitializeComponbent (), который инициализирует элемент управления. Ниже приведен код конструктора MainPage (), эквивалентный рассмотренной выше разметке XAML.

public MainPage() {

InitializeComponent();

cmdClickMe.Click += cmdClickMe_Click;

Этот способ полезен при динамическом создании элемента управления, когда под­ключить событие нужно в некоторый момент времени при активном окне. Для срав­нения: события, подключенные в разметке XAML, всегда остаются подключенными. Подключение в коде позволяет упростить разметку XAML. Это полезно, когда над про­ектом, кроме программистов, работают дизайнеры, не умеющие работать с разметкой. Недостаток метода состоит в усложнении кода С#.

Отключить обработчик от события можно только с помощью кода С#. Для этого ис­пользуется оператор -=, как в приведенном ниже примере.

cmdClickMe.Click -= cmdClickMe_Click;

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

Библиотеки классов Silverlight

Для создания кодов реальных приложений необходимо знать классы, с которыми вы будете работать. Для этого нужно ознакомиться с библиотеками базовых классов, поставляемых с Silverlignt.

Набор классов Silverlight представляет собой упрощенную версию .NET Framework. Упрощение достигнуто двумя способами. Во-первых, в Silverlight представлена только часть типов, доступных в .NET Framework. Во-вторых, мно­гие типы, представленные в Silverlight, содержат ограниченный набор конструкторов, методов, свойств и событий. В Silverlight доступны только наиболее полезные элементы наиболее важных классов, позволяющие решать большин­ство практических задач.

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

Тестирование приложения Silverlight

Теперь у вас есть все необходимое для тестирования проекта Silverlight. При вы­полнении приложения Silverlight программа Visual Studio запускает браузер, установ­ленный по умолчанию, и передает ему скрытую тестовую страницу TestPage.html. Тестовая страница создает новый элемент управления Silverlight, инициализируя его на основе разметки MainPage . xaml.

Примечание. Программа Visual Studio устанавливает файл TestPage. html в качестве начальной страницы проекта. В результате при запуске проекта на выполнение страница TestPage. html загружается в браузер. Чтобы задать другую начальную страницу, щелкните правой кнопкой мыши на файле HTML в окне Solution Explorer (Проводник решений) и выберите команду Set As Start Page (Установить в качестве начальной страницы).

На рис. 1.6 показан результат выполнения приведенного выше примера в браузере. При щелчке на кнопке код обработки события изменяет текст. Все операции выпол­няются в браузере на стороне клиента. Обращаться к серверу и передавать страницу обратно (как в случае использования серверного кода ASP.NET) нет необходимости. Весь код Silverlight выполняется на стороне клиента усеченной версией .NET, внедренной в надстройку Silverlight.

Если содержимое Silverlight используется на обычном сайте (без серверного кода ASP.NET), программа Visual Studio в процессе тестирования не использует веб-сервер.

Рис. 1.6. Выполнение приложения Silverlight в браузере Firefox

Вместо этого она открывает тестовую страницу HTML непосредственно в файловой си­стеме (адрес страницы в файловой системе виден на рис. 1.6 в адресной строке).

В некоторых ситуациях такое поведение может привести к несоответствию между средой тестирования и средой развертывания, в которой используется полнофунк­циональный веб-сервер, передающий страницы по каналам HTTP. Наиболее очевид­ное отличие — разные контексты безопасности. Иными словами, браузер может быть сконфигурирован таким образом, чтобы разрешить локальным страницам выполнять операции, запрещенные для отдаленного содержимого. На практике эта проблема воз­никает редко, поскольку Silverlight всегда выполняется в ограниченном контексте без­опасности и не предоставляет средства доверительных (trusted) местоположений. Это упрощает модель развертывания приложений Silverlight и гарантирует работоспособ­ность приложения в любой среде. Однако для окончательного тестирования приложе­ния Silverlight рекомендуется создать тестовый сайт ASP.NET (как описано в конце гла­вы) или, еще лучше, развернуть приложение на тестирующем веб-сервере.

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии