Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога

Архитектура WPF. Расширения XAML

Описание значений свойств при помощи XAML-элементов

Значение свойства какого-либо объекта, описанного при помощи XAML, можно просто описать при помощи атрибутов XML, например:

Когда это требуется (например, если значение свойства является коллекцией элементов или содержит вложенные объекты, которые также подлежат описанию), программист может использовать другой синтаксис на базе XML-элементов. Например:

Здесь используются выражения типа “РодительскийЭлемент.ИмяСвойства”. Воспринимаются такие выражения довольно просто и натурально.

Похожий синтаксис используется для задания свойств, зависящих от родителя (аналог функциональности IExtenderProvider Windows Forms). Такие свойства называются Attached Properties и это тема для отдельного рассказа.

Расширения разметки XAML

Язык декларативной разметки XAML спроектирован как надмножество XML и предусматривает набор специфических для него расширений. В основном эти расширения заключаются в специальном синтаксисе, который формируется при помощи фигурных скобок {}. Такие расширения называются расширения разметки (Markup Extensions). Их использование выглядит следующим образом:

Здесь для значения свойства Style используется особый синтаксис, который указывает на необходимость получения значения из указанного ресурса. В XML-пространстве имен, которое обычно используется в WPF по умолчанию (http://schemas.microsoft.com/winfx/2006/xaml/presentation) имеется несколько типов таких расширений (например, StaticResource, DynamicResource, Binding, RelativeSource, TemplateBinding). Также в XML-пространстве имен, которое обычно объявляется под псевдонимом x (http://schemas.microsoft.com/winfx/2006/xaml) находятся несколько типов таких расширений (x:Type, x:Static, x:Null, x:Key). Используются они, естественно, точно также как и вышеупомянутые.

Заметим, что в последнем примере используется «вложенный» синтаксис для расширений; с точки зрения XAML это допустимо.

Программист может определить также свои расширения, реализовав соответствующий класс, порожденный от MarkupExtension.

Интересно ознакомится со справочником по доступным стандартным расширениям разметки XAML, который входит в состав документации по WPF. Таким образом можно узнать о многих интересных возможностях, например, встраивание в XAML процедурного кода при помощи x:Code.

Опубліковані Wednesday, October 18, 2006 6:16 PM від EugeneZ
Помічено як:

Коментарі

Немає коментарів
Анонімні коментарі деактивовані. Увійдіть або Зареєструйтесь щоб мати доступ до ресурсів Спільноти.