Главная » Разработка для Windows Phone 7 » Мощь и слабость XAML Windows Phone 7

0

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

Основной объем работ по созданию и инициализации объектов в XAML традиционно выполняется конструктором страницы или класса окна. Из-за этого может создаться впечатление, что XAML играет совершенно незначительную роль в приложении, но на самом деле это абсолютно не так. Как следует из названия, XAML полностью совместим с XML, т.е. его можно создавать как вручную, так и автоматически с помощью любых доступных инструментов.

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

Несмотря на то что XAML называют «декларативным языком», он, безусловно, не является полноценным языком программирования. XAML не позволяет выполнять арифметические действия и динамически создавать объекты.

Опытные разработчики, впервые сталкиваясь с XAML, подчас не приемлют его. Я испытал это на собственном опыте. Все, что мы ценим и любим в таких языках программирования, как C#: обязательные объявления, строгая типизация, контроль выхода за границы массива, возможности трассировки для отладки – теряет смысл, когда все сводится к текстовым строкам XML. Однако с годами я очень неплохо приспособился к XAML и даже наслаждаюсь той свободой, которую он обеспечивает при работе с визуальными элементами приложения. В частности, мне нравится, как наследственные отношения элементов управления воспроизведены в характерной для XML структуре родитель-потомок, а также возможность экспериментировать с XAML, даже просто в дизайнере Visual Studio.

Все задачи, реализуемые в Silverlight, можно распределить по трем категориям:

•                                 То, что можно сделать либо в коде, либо в XAML

•         То, что можно сделать только в коде (например, обработка событий и реализация методов)

•                                 То, что можно сделать только в XAML (например, шаблоны)

И в коде, и в XAML могут создаваться экземпляры классов и структур и задаваться свойства этих объектов. Класс или структура, экземпляр которой создается в XAML, должна быть описана как (безусловно) открытая (public) и иметь конструктор без параметров. При создании экземпляра класса XAML не располагает никакими возможностями передачи каких-либо данных в его конструктор. В XAML определенное событие может быть ассоциировано с обработчиком события, но сам обработчик события должен быть реализован в коде. В XAML нельзя вызвать метод, потому что, опять же, нет никаких способов передачи аргументов.

Практически все приложение на Silverlight может быть реализовано в коде. Однако навигация по страницам строится на базе XAML-файлов классов, производных от PhoneApplicationPage. Есть еще одна важная задача, которая должна реализовываться в XAML: создание шаблонов. Существует два применения шаблонам: для визуального представления данных с использованием коллекций элементов и элементов управления, а также для переопределения внешнего вида элемента управления с сохранением его функциональности. В коде можно создавать альтернативы шаблонам, но не сами шаблоны.

У тех, кто уже немного поработал с Silverlight и накопил небольшой опыт разработки приложений на Silverlight, может возникнуть желание использовать программу проектирования, такую как Expression Blend, которая будет автоматически формировать XAML. Я хочу дать совет, как программист программисту: научитесь писать XAML самостоятельно. Или, как минимум, вы должны уметь читать автоматически сформированный XAML.

Одна из самых замечательных особенностей XAML в том, что он позволяет экспериментировать с ним в интерактивном режиме, и, экспериментируя с XAML, можно многое узнать о Silverlight. Существуют инструменты разработки, специально созданные для таких экспериментов с XAML. В этих приложениях используется статический метод XamlReader.Load, который может преобразовывать текст XAML в объект во время выполнения.

В главе 13 будет представлено приложение, с помощью которого можно экспериментировать с XAML прямо на телефоне, до тех пор можете делать это в дизайнере Visual Studio. Как правило, он быстро и точно реагирует на все изменения, вносимые в XAML. Однако в сложных случаях вам все-таки придется выполнить сборку и развертывание приложения, чтобы увидеть, что происходит.

Источник: Чарльз Петзольд, Программируем Windows Phone 7, Microsoft Press, © 2011.

По теме:

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