Использование динамических языков в Silverlight 2
Теперь можно приступать к редактированию файла кода 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.
Теперь можно выполнить наше динамическое приложение Silverlight, нажав F5 в Visual Studio. Запустится Chiron, подтверждение этому вы увидите в окне командной строки, которое представлено на рис. 14.5.
Здесь сообщается, что доступ к приложению осуществляется через http://localhost:2060. Visual Studio также запустит браузер с переходом по этому адресу, что обеспечит вывод на экран списка файлов Веб-каталога, как показано на рис. 14.6.
Выберите Default.html, чтобы увидеть свое динамическое приложение Silverlight. В браузере будет выведено сообщение "Hello World,", как показано на рис. 14.7.
Теперь, если щелкнуть текст "Hello World,", появится дополнительное сообщение "from Python!" (рис. 14.8).
Это предельно простое приложение, но оно демонстрирует работу Dynamic Language Runtime (Динамическая среда выполнения) в Silverlight и то, как можно настроить Visual Studio для использования динамических языков программирования. В следующем разделе рассматривается, как можно реализовать это же приложение на IronRuby и управляемом JavaScript.