Расширение разметки x:Static
Обновлен: Ноябрь 2007
Ссылается на любую статическую по значению сущность кода, определенную в Спецификация CLS (Common Language Specification) совместимым способом, ссылаемое свойство которой вычисляется до загрузки оставшейся части страницы XAML и может использоваться для предоставления значения свойства в XAML.
Использование атрибута XAML
<object property="{x:Static prefix:typeName.staticMemberName}" .../>
Использование элемента объекта XAML
<object>
<object.property>
<x:Static Member="prefix:typeName.staticMemberName" .../>
</object.property>
</object>
Значения XAML
prefix |
Необязательный компонент. Префикс, который отображает пространство имен xmlns, которое не является пространством имен по умолчанию. См. примечания. |
typeName |
Требуется. Тип, который определяет требуемый статический член. |
staticMemberName |
Требуется. Имя требуемого статического значения члена (константа, статическое свойство, поле или значение перечисления). |
Заметки
Ссылка на сущность кода должна быть одной из следующих:
константа
статическое свойство
поле
значение перечисления
Указание любой другой сущности кода, например нестатического свойства, приводит к ошибке во время компиляции.
Ссылки x:Static могут быть применены к статическим полям или свойствам, которые отсутствуют в пределах пространства имен xmlns по умолчанию, но это требует соответствующего префикса. Пространство имен по умолчанию xmlns для любого данного элемента XAML определяется как атрибут. Как правило, это определяется в корневом элементе, таким образом, xmlns применяется ко всем элементам под корнем. Как правило, пространством имен XML, используемым для программирования Windows Presentation Foundation (WPF), является пространство имен WPF. Должен быть отображен префикс, если выполняется одно из следующих условий:
Ссылка на тип, который существует в Microsoft .NET Framework, но не является частью пространства имен WPF. Это достаточно общий сценарий для использования x:Static. Например, можно использовать ссылку x:Static с префиксом сопоставления для пространства имен CLR System, чтобы ссылаться на статические свойства класса Environment.
Ссылка на тип из пользовательской сборки.
Ссылка на тип, который существует в сборке WPF, но этот тип доступен внутри пространства имен CLR, которое не было сопоставлено, чтобы быть частью определения пространства имен WPF. Сопоставление выполняется путем определений в этой сборке. Несопоставленные пространства имен CLR являются типичными для определений классов WPF в пространствах имен CLR, которые обычно не предназначены для XAML, например System.Windows.Threading.
Дополнительные сведения о префиксах и пространствах имен XML см. в разделе Пространства имен XAML и сопоставление пространств имен.
Можно использовать ссылки x:Static, которые не являются непосредственно типом значения свойства, но могут быть вычислены до этого типа. Например, можно использовать ссылку x:Static, чтобы получить значение из перечисления или из статического свойства, например различные цвета и кисти, определяемые ссылками SystemColors. x:Static, потенциально могут быть использованы для задания любого свойства в синтаксисе XAML, даже те, которые могут фактически основываться на свойстве с ссылочным типом, поскольку фактическая обработка значения x:Static, вычисленного один раз, может меняться, в зависимости от типа поведения преобразователя свойства там, где применяется статическое значение.
Синтаксис атрибута является наиболее распространенным синтаксисом, используемым с этим расширением разметки. Метка строки, указанная после идентификатора строки x:Static, присваивается как значение Member базового класса расширения StaticExtension.
x:Static может использоваться в синтаксисе элемента объекта. В этом случае указание значения свойства Member является обязательным.
Излишним может оказаться использование x:Static в атрибуте, в котором свойство Member определено как пара "свойство = значение".
<object property="{x:Static Member=prefix:typeName.staticMemberName}" .../>
Подробное определение зачастую удобно использовать для расширений, которые имеют несколько устанавливаемых свойств, а также в том случае, если некоторые свойства являются необязательными. Так как x:Static имеет только одно устанавливаемое свойство, которое является обязательным, это использование не является типичным.
В реализации процессора XAML WPF обработка данного расширения разметки определяется классом StaticExtension.
x:Static является расширением разметки. Расширения разметки обычно реализуются, если требуется заменить значения атрибутов на нелитеральные значения или имена обработчиков и если требуется не только простая настройка преобразователей типов на работу с определенными типами или свойствами. Все расширения разметки в XAML используют символы { and } в синтаксисе их атрибутов, который является соглашением, по которому процессор XAML распознает, что расширение разметки должно обработать атрибут. Сведения о расширениях разметки содержатся в разделе Расширения разметки и XAML.
См. также
Основные понятия
Стилизация и использование шаблонов