Опубликован: 24.03.2009 | Доступ: свободный | Студентов: 2283 / 115 | Оценка: 4.24 / 3.93 | Длительность: 17:47:00
Лекция 14:

Использование динамических языков в Silverlight 2

< Лекция 13 || Лекция 14: 1234

Теперь можно приступать к редактированию файла кода Python, чтобы сделать что-то более интересное. Рассмотрим код:

from System.Windows import Application
from System.Windows.Controls import UserControl
def handleClick(sender, eventArgs):
sender.Text = sender.Text + " from Python!"
class App:
def     init    (self): self.scene = Application.Current.Load RootVisua l (UserControl (),"app.xaml")
def start(self):
self.scene.txtMessage.MouseLeftButtonUp += handleClick
App().start()

Если у вас есть опыт разработки приложений Silverlight на C# или VB, синтаксис будет вам знаком. Например, строка

from System.Windows import Application

эквивалентна строке на C#

using System.Windows;

и указывает на пространство имен, в котором находится класс Application.

Затем определяем Python-класс App и задаем объект scene для App, загружая XAML-файл, описанный ранее. Как часть описания класса задается обработчик события запуска:

def start(self):

и код, который будет выполняться в этом обработчике. Этот код определяет обработчик события MouseLeftButtonUp элемента управления txtMessage типа TextBlock, который был описан нами ранее. Назовем обработчик handleClick (Обработка щелчка).

Сам код этого обработчика события выглядит следующим образом:

def handleClick(sender, eventArgs):
sender.Text = sender.Text + " from Python!"

Выполнение этого кода обеспечивает добавление фразы "from Python!" (из Python!) в конец значения свойства Text отправителя (которым, в данном случае, является TextBlock ).

Чтобы выполнить это приложение, используется Chiron. Настроить Visual Studio на запуск Chiron можно, щелкнув правой кнопкой мыши файл проекта в Solution Explorer (заметьте, вы должны использовать файл проекта, а не файл решения; файла проекта обычно является первым дочерним файлом в решении) и выбрав в контекстном меню опцию Property Pages (Страницы свойств).

На Property Pages выберите страницу Start Options (Опции запуска) и на ней опцию Start External Program (Запустить внешнюю программу). Используйте кнопку с многоточием для перехода к каталогу, в котором находится Chiron.exe. Это должен быть каталог C:\Program Files\Microsoft SDKs\Silverlight\v2.0\Tools\Chiron\Chiron.exe.

Введите /b в поле Command Line Arguments (Аргументы командной строки) и введите местоположение Веб-сайта в поле Working Directory (Рабочий каталог). Все это можно увидеть на рис. 14.4.

 Настройка Visual Studio на использование Chiron

Рис. 14.4. Настройка Visual Studio на использование Chiron

Теперь можно выполнить наше динамическое приложение Silverlight, нажав F5 в Visual Studio. Запустится Chiron, подтверждение этому вы увидите в окне командной строки, которое представлено на рис. 14.5.

 Visual Studio выполняет Chiron

Рис. 14.5. Visual Studio выполняет Chiron

Здесь сообщается, что доступ к приложению осуществляется через http://localhost:2060. Visual Studio также запустит браузер с переходом по этому адресу, что обеспечит вывод на экран списка файлов Веб-каталога, как показано на рис. 14.6.

 Список файлов каталога Chiron

Рис. 14.6. Список файлов каталога Chiron

Выберите Default.html, чтобы увидеть свое динамическое приложение Silverlight. В браузере будет выведено сообщение "Hello World,", как показано на рис. 14.7.

 Ваше первое Silverlight приложение на Python

Рис. 14.7. Ваше первое Silverlight приложение на Python

Теперь, если щелкнуть текст "Hello World,", появится дополнительное сообщение "from Python!" (рис. 14.8).

 Динамическое приложение в действии

Рис. 14.8. Динамическое приложение в действии

Это предельно простое приложение, но оно демонстрирует работу Dynamic Language Runtime (Динамическая среда выполнения) в Silverlight и то, как можно настроить Visual Studio для использования динамических языков программирования. В следующем разделе рассматривается, как можно реализовать это же приложение на IronRuby и управляемом JavaScript.

< Лекция 13 || Лекция 14: 1234