Синтаксис XAML
На основе XML определяет набор тегов и атрибутов, представляющих объекты интерфейса и их презентации.
Синтаксис XML
XAML - язык тегов, производный от XML. Графические компоненты определяются открытыми или закрытыми тегами с атрибутами.
Пример тега с содержимым:
<TextBlock> Un texte </TextBlock>
и без содержания:
<TextBlock />
Атрибуты подобны переменным, назначаемым значением. В XML эти значения заключены в кавычки, в отличие от содержимого текста или одного или нескольких других тегов.
Например, мы задаем имя t1 с атрибутом Name :
<TextBlock Name="t1" /> <TextBlock Name="t1"> Un texte </TextBlock>
Видно, что теги могут содержать другие теги, и даже атрибуты могут стать тегами или наоборот, например:
<TextBlock Text="Un texte" />
Синтаксис свойств
Свойство объекта, под которым подразумевается то, что его характеризует, может быть записано в виде атрибута. Например, свойство цвета фона прямоугольника записывается с атрибутом Fill:
<Rectangle Fill="Red" />
Для описания сложных свойств XAML имеет альтернативный формат под названием «Property element syntax» (синтаксис элемента свойства), расширяющий синтаксис XML и придающий точке новое значение.
В XML значение атрибута должно быть строкой. В XAML это может быть еще один объект языка.
Но объект не присваивается напрямую атрибуту со знаком равенства, его связывают с точкой по синтаксису, свойственному XAML, которая имеет форму:
nomElement.nomPropriété
Рассмотрим пример объекта Rectangle и свойство Fill, которое является цветом заливки, атрибут преобразуется в теги:
<Rectangle> <Rectangle.Fill> </Rectangle.Fill> </Button>
Для добавления тегов и атрибутов к свойству Fill, например текстуры, выполненной с фотографией, что будет показано в этом руководстве.
Другой пример представлен спецификацией языка, то есть кнопкой, с которой связан раскрывающийся список:
<Button> <Button.ContextMenu> <ContextMenu> <MenuItem> Ouvrir </MenuItem> <MenuItem> Fermer </MenuItem> </ContextMenu> </Button.ContextMenu> </Button>
Видно, что КонтексттМеню, представляющее собой список меню, становится свойством кнопки благодаря «Button.КонтексттоМеню», и заявляет о себе внутри описания кнопки.
Содержимое тега можно рассматривать как свойство. Таким образом, текст кнопки является свойством, которое записывается в содержимое или как значение атрибута Текст или Содержимое в зависимости от объекта:
<TextBlock Text="Un texte" />
Пространства имен
Пространства имен задаются в качестве атрибутов самого глобального контейнера в файле XAML, Canvas, Windows или Page. Это заданные URL-адреса, которые будут приведены в примерах и соответствуют типу определения XAML.
Пример :
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
Для пространств имен, отличных от пространства по умолчанию (первая строка), перед каждым элементом этого пространства имен должен стоять префикс (как x выше). В данном случае мы поставим:
x:nomElement
для каждого элемента пространства имен x.
Прикрепленные свойства
Это концепция XAML. Синтаксис такой же, как для элементов свойства, показанных выше, имя свойства связывается с именем типа (а не с именем элемента, таким как Button).
nomType.nomPropriété
Цель - добавить свойства к типу. Элементы этого типа могут иметь такие свойства.
Связанные события
В XAML можно определить событие по типу, в то время как обработчики событий будут присоединены к объектам, представленным тегами (например, Button). Синтаксис всегда один и тот же:
nomType.nomEvènement
Расширить язык
Расширить язык XAML можно с помощью особого синтаксиса: между {} помещается расширение, состоящее из имени класса, за которым следует экземпляр.
Пример, взятый из спецификации языка:
<TextBlock Style="{StaticResource MonStyle}"> Un texte </TextBlock>
Класс StaticResource содержит добавленные определения, а экземпляр MonStyle становится свойством кнопки. Мы сможем использовать Button.MonStyle в определении кнопки и воспользоваться новыми возможностями, реализованными в классе.
Корневые характеристики и теги: Canvas, Page, Application
.Чувствительность к регистру
XAML чувствителен к регистру. Начальные буквы слов должны быть сохранены.
Это не обязательно относится к значениям атрибутов, поэтому значение «Истина» и «Истина» допустимы, если их узнает родитель.
Пробелы
Лишние пробелы игнорируются, а также специальные символы, такие как код табуляции, эквивалентные пробелу.
Корневой тег
Как и любой документ XML, определение XAML должно быть включено в единый тег, так называемый корневой элемент.
Для страницы WPF в качестве контейнера используется тег Page или Windows.
Для Сильверлайта это Канвас.
Для приложения это Приложение.
Дополнительная информация