Основы проектирования интерфейсов с использованием технологии Windows Presentation Foundation. Шамшев Ан. Б. - 34 стр.

UptoLike

Составители: 

34
pExtension очень простон включает единственный метод
ProvideValue(), получающий требуемое значение. Другими словами,
когда анализатор XAML встречает показанный выше оператор, он
создает экземпляр класса StaticExtension, а затем вызывает
ProvideValue(), чтобы получить объект, возвращенный статическим
свойством SystemColors.ActiveCaption.Brush. Свойство Foreground
кнопки cmdAnswer затем устанавливается равным извлеченному объекту.
Конечный результат этого фрагмента XAML-кода эквивалентен
тому, как если бы было написано следующее:
cmdAnswer.Foreground=SystemColors.ActiveCaptionBrush;
Поскольку расширения разметки отображаются на классы, они
могут также применяться в виде вложенных свойств. Например, мож-
но использовать StaticExtension со свойством Button.Foreground сле-
дующим образом:
<Button>
<Button.Foreground>
<x:StaticMember="SystemColors.ActiveCaptionBrush">
</x:Static>
</Button.Foreground>
</Button>
Как большинство расширений разметки, StaticExtension должен
вычисляться во время выполнения, потому что только тогда можно
определить текущие системные цвета. Некоторые расширения раз-
метки могут определяться во время компиляции. К ним относятся
NullExtension (представляющее значение null) и TypeExtension (кон-
струирующее объект, представляющий тип .NET). Расширения раз-
метки часто используются при привязке данных и при использовании
ресурсов.
2.4.4. Прикрепленные свойства
Наряду с обычными свойствами XAML также включает концеп-
цию прикрепленных свойствсвойств, которые могут применяться к