Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
03.11.13 / 2_Особенности XAML.doc
Скачиваний:
55
Добавлен:
08.06.2015
Размер:
282.62 Кб
Скачать

Код и скомпилированный xaml

Это метод, применяемый Visual Studio, который обладает рядом преимуществ, уже затронутых ранее:

Часть работы автоматизирована. Нет необходимости выполнять поиск идентификатора с помощью LogicalTreeHelper или привязывать в коде обработчики событий.

Чтение BAML-кода во время выполнения происходит быстрее, чем чтение XAML-кода.

Упрощается развертывание. Поскольку BAML-код встраивается в сборку как один или более ресурсов, его невозможно потерять.

Файлы XAML могут редактироваться в других программах, таких как инструменты графического дизайна. Это открывает возможность лучшей кооперации между программистами и дизайнерами. (Вы также получаете это преимущество, когда используете не компилированный XAML).

В Visual Studio используется двухэтапный процесс компиляции приложений WPF. Первый этап — компиляция XAML-файлов в BAML. Например, если проект включает файл по имени Window1.xaml, то компилятор создаст временный файл Window1.baml и поместит его в подпапку obj\Debug (в папке проекта). В то же время для окна создается частичный класс с использованием выбранного языка. Например, если применяется С#, то компилятор создаст файл по имени Window1.g.cs в папке obj\Debug. Здесь g означает generated (сгенерированный).

Частичный класс включает следующие вещи:

Поля для всех элементов управления в окне.

Код, загружающий BAML из сборки и тем самым создающий дерево объектов. Это случается, когда конструктор вызывает InitializeComponent().

Код, который назначает соответствующий объект элемента управления каждому полю и подключает все обработчики событий. Это происходит в методе по имени Connect(), который вызывается анализатором BAML при каждом нахождении именованного объекта.

Частичный класс не включает кода для создания экземпляра и инициализации элементов управления, потому что эта задача выполняется механизмом WPF, когда BAML-код обрабатывается методом Application.LoadComponent().

В процессе компиляции компилятор XAML должен создать частичный класс. Это возможно, только если используемый вами язык поддерживает модель .NET Code DOM. Языки С# и VB поддерживают Code DOM, но если используется язык от независимого поставщика, следует убедиться, что эта поддержка доступна, прежде чем создавать приложения со скомпилированным XAML.

Когда завершается этап компиляции XAML в BAML, Visual Studio использует компилятор соответствующего языка, чтобы скомпилировать код и сгенерированные файлы частичного класса. В случае приложения С# эту задачу решает компилятор csc.exe. Скомпилированный код становится единой сборкой (*.exe), и BAML для каждого окна встраивается как отдельный ресурс.

Только xaml

Ранее было показано, как использовать XAML из приложения на основе кода. Разработчики для .NET будут заниматься этим большую часть времени. Однако также возможно использовать файл XAML без создания кода. Это называется несвязанный XAML-файл. Несвязанные файлы XAML могут открываться непосредственно в Internet Explorer. (Предполагается, что платформа .NET Framework установлена.)

Если файл XAML использует код, он не может быть открыт в браузере Internet Explorer. Однако можно построить браузерное приложение под названием ХВАР, в котором это ограничение преодолено.

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

Чтобы попробовать несвязанную страницу XAML, внесите в файл .xaml следующие изменения:

Удалите атрибут Class из корневого элемента.

Удалите любые атрибуты, которые присоединяют обработчики событий (такие как атрибут Button.Click).

Измените имя открывающего и закрывающего дескриптора с Window на Page. Браузер Internet Explorer может отображать только страницы, а не отдельные окна.

XAML 2009

В WPF 4 появился новый стандарт под названием XAML 2009. Однако пока он не внедрен повсеместно. Чтобы получить преимущества XAML 2009 в настоящее время, необходимо использовать несвязанные, не скомпилированные файлы XAML, что не удовлетворяет большинство разработчиков.

Даже если вы решите не использовать XAML 2009, стоит кратко познакомиться с его средствами. Дело в том, что в конечном итоге в следующей версии WPF язык XAML 2009 превратится в полностью интегрированный скомпилированный стандарт. Имейте в виду, что средство IntelliSense в Visual Studio пометит некоторые из них как ошибки времени проектирования, потому что пока производится проверка кода на предмет соответствия существующему стандарту XAML. Однако во время выполнения они будут работать должным образом.

Соседние файлы в папке 03.11.13