Атрибуты среды CLR, связанные с XAML, для пользовательских типов и библиотек

В этом разделе описываются атрибуты среды CLR, определенные службами XAML .NET. В нем также описываются другие атрибуты СРЕДЫ CLR, определенные в .NET, которые имеют сценарий, связанный с XAML, для приложения к сборкам или типам. Атрибутирование сборок, типов или членов с этими атрибутами CLR предоставляет сведения о системе типов XAML, связанные с вашими типами. Сведения предоставляются любому потребителю XAML, использующего службы XAML .NET для обработки потока узлов XAML напрямую или через выделенные средства чтения XAML и записи XAML.

Использование атрибутов СРЕДЫ CLR влечет за собой использование общей среды CLR для определения типов, в противном случае такие атрибуты недоступны. Если для определения резервного копирования типов используется среда CLR, контекст схемы XAML по умолчанию, используемый средствами записи XAML служб .NET XAML, может считывать атрибуты CLR путем отражения при поддержке сборок.

В следующих разделах описаны атрибуты, связанные с XAML, которые можно применять к пользовательским типам или пользовательским элементам. Каждый атрибут CLR передает сведения, относящиеся к системе типов XAML. В пути загрузки сведения о атрибутах либо помогают средству чтения XAML сформировать допустимый поток узлов XAML, либо он помогает средству записи XAML создать допустимый граф объектов. В пути сохранения сведения о атрибутах помогают читателю XAML сформировать допустимый поток узла XAML, который восстанавливает системные сведения о типах XAML; или объявляет указания сериализации или требования для модуля записи XAML или других потребителей XAML.

AmbientAttribute

Справочная документация:AmbientAttribute

Применяется к: членам класса, свойства или get метода доступа, поддерживающим присоединенные свойства.

Аргументы: Нет

AmbientAttribute указывает, что свойство или все свойства, которые принимают тип атрибута, должны быть интерпретированы в концепции внешнего свойства в XAML. Концепция окружения относится к тому, как обработчики XAML определяют владельцев типов членов. Внешнее свойство — это свойство, в котором значение, как ожидается, будет доступно в контексте синтаксического анализа при создании графа объектов, но при этом обычное подстановка элемента типа приостановлена для немедленного создаваемого набора узлов XAML.

Концепция окружающей среды может применяться к присоединенным элементам, которые не представляются как свойства с точки зрения определения атрибута AttributeTargetsCLR. Использование метода атрибуции должно применяться только для get метода доступа, поддерживающего присоединенное использование для XAML.

КонструкторArgumentAttribute

Справочная документация:ConstructorArgumentAttribute

Область применения: класс

Аргументы: строка, указывающая имя свойства, соответствующего одному аргументу конструктора.

ConstructorArgumentAttribute указывает, что объект можно инициализировать с помощью синтаксиса конструктора без параметров, а свойство указанного имени предоставляет сведения о строительстве. Эта информация предназначена главным образом для сериализации XAML. Дополнительные сведения см. в разделе ConstructorArgumentAttribute.

ContentPropertyAttribute

Справочная документация:ContentPropertyAttribute

Область применения: класс

Аргументы: строка, указывающая имя члена типа атрибута.

ContentPropertyAttribute указывает, что свойство, именованное аргументом, должно служить свойством содержимого XAML для этого типа. Определение свойства содержимого XAML наследует всем производным типам, которые можно назначить определяемому типу. Определение можно переопределить для определенного производного типа, применяя ContentPropertyAttribute к конкретному производного типа.

Для свойства, которое служит свойством содержимого XAML, тег элемента свойства для свойства можно опустить в использовании XAML. Как правило, вы назначаете свойства содержимого XAML, которые повышают упрощенную разметку XAML для ваших моделей содержимого и хранения. Так как только один член может быть назначен свойством содержимого XAML, иногда у вас есть варианты разработки, чтобы определить, какие из нескольких свойств контейнера типа должны быть назначены как свойство содержимого XAML. Другие свойства контейнера должны использоваться с явными элементами свойств.

В потоке узлов XAML свойства содержимого XAML по-прежнему создаются StartMember и EndMember узлы, используя имя свойства для XamlMemberобъекта. Чтобы определить, является ли элемент свойством содержимого XAML, изучите XamlType значение из StartObject позиции и получите значение ContentProperty.

ContentWrapperAttribute

Справочная документация:ContentWrapperAttribute

Применяется к: класс, в частности типы коллекций.

Аргументы. Указывает Type тип, используемый в качестве типа оболочки содержимого для внешнего содержимого.

ContentWrapperAttribute указывает один или несколько типов связанного типа коллекции, который будет использоваться для упаковки внешнего содержимого. Внешнее содержимое относится к случаям, когда ограничения системы типов для типа свойства контента не фиксируют все возможные варианты содержимого, которые будет поддерживать использование XAML для собственного типа. Например, поддержка XAML для содержимого определенного типа может поддерживать строки в строго типизированном универсальном Collection<T>формате. Оболочки содержимого полезны для переноса существующих соглашений разметки в концепцию XAML присваиваемых значений для коллекций, таких как перенос текста con режим палатки ls.

Чтобы указать несколько типов оболочки содержимого, примените атрибут несколько раз.

DependsOnAttribute

Справочная документация:DependsOnAttribute

Область применения: Свойство

Аргументы: строка, указывающая имя другого члена атрибута.

DependsOnAttribute указывает, что свойство атрибута зависит от значения другого свойства. Применение этого атрибута к определению свойства гарантирует, что зависимые свойства обрабатываются сначала в записи объекта XAML. DependsOnAttribute Использование исключительных случаев свойств в типах, где необходимо соблюдать определенный порядок синтаксического анализа для допустимого создания объекта.

Можно применить несколько DependsOnAttribute вариантов к определению свойства.

MarkupExtensionReturnTypeAttribute

Справочная документация:MarkupExtensionReturnTypeAttribute

Применяется к: класс, который, как ожидается, будет производным типом MarkupExtension .

Аргументы: указывает Type наиболее точный тип, который следует ожидать в результате ProvideValue атрибута MarkupExtension.

Дополнительные сведения см. в разделе "Расширения разметки" для XAML.

NameScopePropertyAttribute

Справочная документация:NameScopePropertyAttribute

Область применения: класс

Аргументы: поддерживает две формы атрибуции:

  • Строка, указывающая имя свойства в типе атрибута.

  • Строка, указывающая имя свойства и Type тип, определяющий именованное свойство. Эта форма предназначена для указания присоединенного элемента в качестве имени XAML область свойства.

NameScopePropertyAttributeуказывает свойство, которое предоставляет имя XAML область значение для класса атрибутов. Ожидается, что свойство XAML область будет ссылаться на объект, реализующий INameScope и содержащий фактическое имя XAML область, его хранилище и его поведение.

RuntimeNamePropertyAttribute

Справочная документация:RuntimeNamePropertyAttribute

Область применения: класс

Аргументы: строка, указывающая имя свойства имени времени выполнения в типе атрибута.

RuntimeNamePropertyAttributeсообщает свойство типа атрибута, который сопоставляется с директивой XAML x:Name. Свойство должно быть типом String и должно быть чтением и записью.

Определение наследует для всех производных типов, которые можно назначить определяемому типу. Определение можно переопределить для определенного производного типа, применяя RuntimeNamePropertyAttribute к конкретному производного типа.

TrimSurroundingWhitespaceAttribute

Справочная документация:TrimSurroundingWhitespaceAttribute

Область применения: Типы

Аргументы: Нет.

TrimSurroundingWhitespaceAttribute применяется к определенным типам, которые могут отображаться как дочерние элементы в содержимом пробела (содержимое, которое содержит коллекция WhitespaceSignificantCollectionAttribute). TrimSurroundingWhitespaceAttribute в основном относится к пути сохранения, но доступен в системе типов XAML в пути загрузки путем XamlType.TrimSurroundingWhitespaceизучения. Дополнительные сведения см. в разделе "Обработка пробелов в XAML".

TypeConverterAttribute

Справочная документация:TypeConverterAttribute

Применяется к: класс, свойство, метод (единственным допустимым вариантом метода XAML является get метод доступа, поддерживающий присоединенный элемент).

Аргументы: тип TypeTypeConverter.

TypeConverterAttribute в контексте XAML ссылается на пользовательскую TypeConverter. Это TypeConverter обеспечивает поведение преобразования типов для пользовательских типов или членов этого типа.

Примените атрибут к типу TypeConverterAttribute , ссылаясь на реализацию преобразователя типов. Можно определить преобразователи типов для XAML на классах, структурах или интерфейсах. Не нужно предоставлять преобразование типов для перечислений, это преобразование включено в собственном коде.

Преобразователь типов должен иметь возможность преобразовать из строки, которая используется для атрибутов или текста инициализации в разметке в целевой тип. Дополнительные сведения см. в разделе TypeConverters и XAML.

Вместо применения ко всем значениям типа можно также установить поведение преобразователя типов для XAML для определенного свойства. В этом случае применяется TypeConverterAttribute к определению свойства (внешнему определению, а не к конкретным get и set определениям).

Поведение преобразователя типов для использования пользовательского присоединенного члена XAML можно назначить, применяя TypeConverterAttribute к методу get доступа, поддерживающему использование XAML.

TypeConverterАналогично , TypeConverterAttribute существовал в .NET до существования XAML, и модель преобразователя типов служила другим целям. Чтобы ссылаться и использовать TypeConverterAttribute, необходимо полностью указать его или указать инструкцию using для System.ComponentModel. Кроме того, включите в проект сборку system.

UidPropertyAttribute

Справочная документация:UidPropertyAttribute

Область применения: класс

Аргументы: строка, которая ссылается на соответствующее свойство по имени.

Указывает свойство CLR класса, который псевдонимирует директиву x:Uid.

UsableDuringInitializationAttribute

Справочная документация:UsableDuringInitializationAttribute

Область применения: класс

Аргументы: логическое значение. Если используется для целевой цели атрибута, значение должно иметь значение true.

Указывает, создан ли тип сверху вниз во время создания графа объектов XAML. Это расширенная концепция, которая, вероятно, тесно связана с определением модели программирования. Дополнительные сведения см. в разделе UsableDuringInitializationAttribute.

ValueSerializerAttribute

Справочная документация:ValueSerializerAttribute

Применяется к: класс, свойство, метод (единственным допустимым вариантом метода XAML является get метод доступа, поддерживающий присоединенный элемент).

Аргументы: класс Type поддержки сериализатора значений, используемый при сериализации всех свойств типа атрибута или конкретного свойства атрибута.

ValueSerializer задает класс сериализации значений, требующий большего состояния и контекста, чем это TypeConverter делает. ValueSerializer можно связать с присоединенным членом, применив ValueSerializerAttribute атрибут к методу статического get доступа для присоединенного элемента. Сериализация значений также применима для перечислений, интерфейсов и структур, но не для делегатов.

WhitespaceSignificantCollectionAttribute

Справочная документация:WhitespaceSignificantCollectionAttribute

Применяется к: класс, в частности типы коллекций, которые должны размещать смешанное содержимое, где пробелы вокруг элементов объекта могут быть значительными для представления пользовательского интерфейса.

Аргументы: Нет.

WhitespaceSignificantCollectionAttribute указывает, что тип коллекции должен обрабатываться как пробел, значительный обработчиком XAML, что влияет на построение узлов значений потока XAML в коллекции. Дополнительные сведения см. в разделе "Обработка пробелов в XAML".

XamlDeferLoadAttribute

Справочная документация:XamlDeferLoadAttribute

Применимо к: класс, свойство.

Аргументы: поддерживает два типа форм атрибуции в виде строк или типов как Type. См. раздел XamlDeferLoadAttribute.

Указывает, что класс или свойство имеет отложенное использование нагрузки для XAML (например, поведение шаблона) и сообщает класс, который позволяет отложить поведение и тип назначения или контента.

XamlSetMarkupExtensionAttribute

Справочная документация:XamlSetMarkupExtensionAttribute

Область применения: класс

Аргументы: имена обратного вызова.

Указывает, что класс может использовать расширение разметки для предоставления значения для одного или нескольких его свойств и ссылается на обработчик, который модуль записи XAML должен вызывать перед выполнением операции набора расширений разметки для любого свойства класса.

XamlSetTypeConverterAttribute

Справочная документация:XamlSetTypeConverterAttribute

Область применения: класс

Аргументы: имена обратного вызова.

Указывает, что класс может использовать преобразователь типов для предоставления значения для одного или нескольких его свойств, и ссылается на обработчик, который модуль записи XAML должен вызывать перед выполнением операции набора преобразователей типов для любого свойства класса.

XmlLangPropertyAttribute

Справочная документация:XmlLangPropertyAttribute

Область применения: класс

Аргументы: строка, указывающая имя свойства псевдониму xml:lang для типа атрибута.

XmlLangPropertyAttribute сообщает свойство типа атрибута, который сопоставляется с директивой XML lang . Свойство не обязательно типа String , но должно быть назначено из строки (назначение может выполняться путем связывания преобразователя типов с типом свойства или конкретным свойством). Свойство должно быть прочитано и записано.

Сценарий сопоставления xml:lang заключается в том, что объектная модель среды выполнения имеет доступ к данным языка, заданным XML, без конкретной обработки с помощью XMLDOM.

Определение наследует для всех производных типов, которые можно назначить определяемому типу. Определение можно переопределить для определенного производного типа, применяя XmlLangPropertyAttribute к конкретному производному типу, хотя это редкий сценарий.

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

XmlnsCompatibleWithAttribute

Справочная документация:XmlnsCompatibleWithAttribute

Аргументы.

  • Строка, указывающая идентификатор пространства имен XAML для подзадач.

  • Строка, указывающая идентификатор пространства имен XAML, которое может подсутить пространство имен XAML из предыдущего аргумента.

    XmlnsCompatibleWithAttribute указывает, что пространство имен XAML может быть подмечено другим пространством имен XAML. Как правило, поглощающее пространство имен XAML указывается в определенном ранее XmlnsDefinitionAttribute. Этот метод можно использовать для управления версиями словаря XAML в библиотеке и для его совместимости с ранее определенным разметкой для более ранней версии словаря.

XmlnsDefinitionAttribute

Справочная документация:XmlnsDefinitionAttribute

Аргументы.

  • Строка, указывающая идентификатор пространства имен XAML для определения.

  • Строка, которая называет пространство имен CLR. Пространство имен CLR должно определять общедоступные типы в сборке, а для использования XAML должен быть по крайней мере один из типов пространств имен CLR.

    XmlnsDefinitionAttribute указывает сопоставление на основе каждой сборки между пространством имен XAML и пространством имен CLR, которое затем используется для разрешения типов с помощью модуля записи объектов XAML или контекста схемы XAML.

    К сборке может применяться несколько XmlnsDefinitionAttribute . Это может быть сделано для любой комбинации следующих причин:

  • Структура библиотеки содержит несколько пространств имен CLR для логической организации доступа к API во время выполнения; Однако все типы в этих пространствах имен должны быть доступны для XAML, ссылаясь на одно и то же пространство имен XAML. В этом случае применяется несколько XmlnsDefinitionAttribute атрибутов с одинаковым XmlNamespace значением, но разными ClrNamespace значениями. Это особенно полезно, если вы определяете сопоставления для пространства имен XAML, которое ваша платформа или приложение намерены быть пространством имен XAML по умолчанию в общем использовании.

  • Проект библиотеки содержит несколько пространств имен CLR, и требуется намеренное разделение пространства имен XAML между использованием типов в этих пространствах имен CLR.

  • Вы определяете пространство имен CLR в сборке и хотите, чтобы он был доступен через несколько пространств имен XAML. Этот сценарий возникает при поддержке нескольких словарей с одной и той же базой кода.

  • Вы определяете поддержку языка XAML в одном или нескольких пространствах имен CLR. В этом случае XmlNamespace значение должно быть http://schemas.microsoft.com/winfx/2006/xaml.

XmlnsPrefixAttribute

Справочная документация:XmlnsPrefixAttribute

Аргументы.

  • Строка, указывающая идентификатор пространства имен XAML.

  • Строка, указывающая рекомендуемый префикс.

    XmlnsDefinitionAttribute указывает рекомендуемый префикс, используемый для пространства имен XAML. Префикс полезен при написании элементов и атрибутов в XAML-файле, сериализованном службами XAML XamlXmlWriter.NET, или при взаимодействии библиотеки, реализующей XAML, с средой разработки с функциями редактирования XAML.

    К сборке может применяться несколько XmlnsPrefixAttribute . Это может быть сделано для любой комбинации следующих причин:

  • Сборка определяет типы для нескольких пространств имен XAML. В этом случае определите разные значения префикса для каждого пространства имен XAML.

  • Вы поддерживаете несколько словарей и используете разные префиксы для каждого словаря и пространства имен XAML.

  • Вы определяете поддержку языка XAML в сборке и имеете XmlnsDefinitionAttribute значение .http://schemas.microsoft.com/winfx/2006/xaml В этом случае обычно следует повысить уровень префикса x.

Примечание.

Службы XAML .NET также определяют атрибут RootNamespaceAttribute, связанный с XAML. Этот атрибут является атрибутом уровня сборки для поддержки системы проекта, и он не относится к пользовательским типам XAML.

См. также