Attributs CLR liés au code XAML pour les types et bibliothèques personnalisés

Cette rubrique décrit les attributs CLR (Common Language Runtime) définis par les services XAML .NET. Il décrit également d’autres attributs CLR définis dans .NET qui ont un scénario xaml pour l’application aux assemblys ou types. L’attribution d’assemblys, de types ou de membres avec ces attributs CLR fournit des informations système de type XAML relatives à vos types. Les informations sont fournies à tout consommateur XAML qui utilise les services XAML .NET pour le traitement du flux de nœud XAML directement ou via les lecteurs XAML dédiés et les enregistreurs XAML.

L’utilisation des attributs CLR implique que vous utilisez le CLR global pour définir vos types, sinon ces attributs ne sont pas disponibles. Si vous utilisez le CLR pour définir le stockage de type, le contexte de schéma XAML par défaut utilisé par les enregistreurs XAML des services XAML .NET peut lire l’attribution CLR via la réflexion sur les assemblys de stockage.

Les sections suivantes décrivent les attributs liés au code XAML que vous pouvez appliquer aux types personnalisés ou aux membres personnalisés. Chaque attribut CLR communique des informations pertinentes pour un système de type XAML. Dans le chemin de chargement, les informations attribuées aident le lecteur XAML à former un flux de nœud XAML valide, ou l’enregistreur XAML produit un graphique d’objet valide. Dans le chemin d’enregistrement, les informations attribuées aident le lecteur XAML à former un flux de nœuds XAML valide qui reconstitue les informations système de type XAML ; ou déclare des indicateurs de sérialisation ou des exigences pour l’enregistreur XAML ou d’autres consommateurs XAML.

AmbientAttribute

Documentation de référence :AmbientAttribute

S’applique à : membres de classe, de propriété ou get d’accesseur qui prennent en charge les propriétés attachables.

Arguments : Aucun

AmbientAttribute indique que la propriété, ou toutes les propriétés qui prennent le type attribué, doivent être interprétées sous le concept de propriété ambiante en XAML. Le concept de caractère ambiant renvoie à la façon dont les processeurs XAML déterminent les propriétaires de types des membres. Une propriété ambiante est une propriété où la valeur est censée être disponible dans le contexte d’analyseur lors de la création d’un graphique d’objet, mais où la recherche type-membre classique est suspendue pour le jeu de nœuds XAML immédiat en cours de création.

Le concept ambiant peut être appliqué aux membres pouvant être attachés, qui ne sont pas représentés en tant que propriétés en termes de définition de l’attribution AttributeTargetsCLR . L’utilisation de l’attribution de méthode doit être appliquée uniquement pour un get accesseur qui prend en charge l’utilisation attachable pour XAML.

ConstructeurArgumentAttribute

Documentation de référence :ConstructorArgumentAttribute

S’applique à : classe

Arguments : chaîne qui spécifie le nom de la propriété qui correspond à un seul argument de constructeur.

ConstructorArgumentAttribute spécifie qu’un objet peut être initialisé à l’aide d’une syntaxe de constructeur sans paramètre et qu’une propriété du nom spécifié fournit des informations de construction. Ces informations sont principalement destinées à la sérialisation XAML. Pour plus d’informations, consultez ConstructorArgumentAttribute.

ContentPropertyAttribute

Documentation de référence :ContentPropertyAttribute

S’applique à : classe

Arguments : chaîne qui spécifie le nom d’un membre du type attribué.

ContentPropertyAttribute indique que la propriété nommée par l’argument doit servir de propriété de contenu XAML pour ce type. La définition de propriété de contenu XAML hérite de tous les types dérivés qui sont assignables au type de définition. Vous pouvez remplacer la définition sur un type dérivé spécifique en appliquant ContentPropertyAttribute le type dérivé spécifique.

Pour la propriété qui sert de propriété de contenu XAML, le balisage d’élément de propriété pour la propriété peut être omis dans l’utilisation XAML. En règle générale, vous désignez des propriétés de contenu XAML qui favorisent un balisage XAML simplifié pour vos modèles de contenu et de confinement. Étant donné qu’un seul membre peut être désigné comme propriété de contenu XAML, vous avez parfois des choix de conception à faire concernant les propriétés de conteneur d’un type qui doivent être désignées comme propriété de contenu XAML. Les autres propriétés de conteneur doivent être utilisées avec des éléments de propriété explicites.

Dans le flux de nœuds XAML, les propriétés de contenu XAML produisent StartMember toujours et EndMember les nœuds, en utilisant le nom de la propriété pour le XamlMember. Pour déterminer si un membre est la propriété de contenu XAML, examinez la XamlType valeur de la StartObject position et obtenez la valeur de ContentProperty.

ContentWrapperAttribute

Documentation de référence :ContentWrapperAttribute

S’applique à : classe, en particulier les types de collection.

Arguments : qui Type spécifie le type à utiliser comme type de wrapper de contenu pour le contenu étranger.

ContentWrapperAttribute spécifie un ou plusieurs types sur le type de collection associé qui sera utilisé pour encapsuler le contenu étranger. Le contenu étranger fait référence aux cas où les contraintes système de type sur le type de la propriété de contenu ne capturent pas tous les cas de contenu possibles pris en charge par l’utilisation XAML pour le type propriétaire. Par exemple, la prise en charge XAML du contenu d’un type particulier peut prendre en charge les chaînes dans un générique Collection<T>fortement typé. Les wrappers de contenu sont utiles pour migrer des conventions de balisage préexistantes dans la conception xaml de valeurs assignables pour les collections, telles que la migration de con mode tente ls liés au texte.

Pour spécifier plusieurs types de wrapper de contenu, appliquez l’attribut plusieurs fois.

DependsOnAttribute

Documentation de référence :DependsOnAttribute

S’applique à : Propriété

Arguments : chaîne qui spécifie le nom d’un autre membre du type attribué.

DependsOnAttribute indique que la propriété attribuée dépend de la valeur d’une autre propriété. L’application de cet attribut à une définition de propriété garantit que les propriétés dépendantes sont traitées en premier dans l’écriture d’objets XAML. Utilisations de DependsOnAttribute spécifier les cas exceptionnels de propriétés sur les types où un ordre spécifique d’analyse doit être suivi pour la création d’objets valide.

Vous pouvez appliquer plusieurs DependsOnAttribute cas à une définition de propriété.

MarkupExtensionReturnTypeAttribute

Documentation de référence :MarkupExtensionReturnTypeAttribute

S’applique à : classe, qui est censée être un MarkupExtension type dérivé.

Arguments : qui Type spécifie le type le plus précis à attendre en ProvideValue raison de l’attribut MarkupExtension.

Pour plus d’informations, consultez La vue d’ensemble des extensions de balisage pour XAML.

NameScopePropertyAttribute

Documentation de référence :NameScopePropertyAttribute

S’applique à : classe

Arguments : prend en charge deux formes d’attribution :

  • Chaîne qui spécifie le nom d’une propriété sur le type attribué.

  • Chaîne qui spécifie le nom d’une propriété et un Type pour le type qui définit la propriété nommée. Ce formulaire permet de spécifier un membre attachable en tant que propriété namescope XAML.

NameScopePropertyAttribute spécifie une propriété qui fournit la valeur de portée de nom XAML pour la classe attributée. La propriété namescope XAML est censée référencer un objet qui implémente INameScope et contient le namescope XAML réel, son magasin et son comportement.

RuntimeNamePropertyAttribute

Documentation de référence :RuntimeNamePropertyAttribute

S’applique à : classe

Arguments : chaîne qui spécifie le nom de la propriété de nom d’exécution sur le type attribué.

RuntimeNamePropertyAttributesignale une propriété du type attribué qui est mappée à la directive XAML x :Name. La propriété doit être de type String et doit être en lecture/écriture.

La définition hérite de tous les types dérivés qui sont assignables au type de définition. Vous pouvez remplacer la définition sur un type dérivé spécifique en appliquant RuntimeNamePropertyAttribute le type dérivé spécifique.

TrimSurroundingWhitespaceAttribute

Documentation de référence :TrimSurroundingWhitespaceAttribute

S’applique à : types

Arguments : Aucun.

TrimSurroundingWhitespaceAttribute est appliqué à des types spécifiques qui peuvent apparaître en tant qu’éléments enfants dans du contenu significatif de l’espace blanc (contenu détenu par une collection qui a WhitespaceSignificantCollectionAttribute). TrimSurroundingWhitespaceAttribute est principalement pertinent pour le chemin d’enregistrement, mais est disponible dans le système de type XAML dans le chemin de chargement en examinant XamlType.TrimSurroundingWhitespace. Pour plus d’informations, consultez Le traitement de l’espace blanc en XAML.

TypeConverterAttribute

Documentation de référence :TypeConverterAttribute

S’applique à : classe, propriété, méthode (le seul cas de méthode XAML valide est un get accesseur qui prend en charge un membre pouvant être attaché).

Arguments : le TypeTypeConverter.

TypeConverterAttribute dans un contexte XAML fait référence à un objet personnalisé TypeConverter. Cela TypeConverter fournit le comportement de conversion de type pour les types personnalisés ou les membres de ce type.

Appliquez l’attribut TypeConverterAttribute à votre type, en référençant l’implémentation de votre convertisseur de types. Vous pouvez définir des convertisseurs de type pour XAML sur des classes, des structures ou des interfaces. Vous n’avez pas besoin de fournir la conversion de type pour les énumérations, cette conversion est activée en mode natif.

Votre convertisseur de type doit être en mesure de convertir à partir d’une chaîne utilisée pour les attributs ou le texte d’initialisation dans le balisage, dans votre type de destination prévu. Pour plus d’informations, consultez TypeConverters et XAML.

Au lieu d’appliquer à toutes les valeurs d’un type, un comportement de convertisseur de type pour XAML peut également être établi sur une propriété spécifique. Dans ce cas, vous appliquez TypeConverterAttribute la définition de propriété (la définition externe, et non les définitions spécifiquesget).set

Un comportement de convertisseur de type pour l’utilisation XAML d’un membre pouvant être attaché personnalisé peut être affecté en appliquant TypeConverterAttribute à l’accesseur get de méthode qui prend en charge l’utilisation XAML.

Similaire à TypeConverter, TypeConverterAttribute existait dans .NET avant l’existence de XAML, et le modèle de convertisseur de type a servi d’autres objectifs. Pour référencer et utiliser TypeConverterAttribute, vous devez le qualifier entièrement ou fournir une using instruction pour System.ComponentModel. Incluez également l’assembly système dans votre projet.

UidPropertyAttribute

Documentation de référence :UidPropertyAttribute

S’applique à : classe

Arguments : chaîne qui fait référence à la propriété pertinente par nom.

Indique la propriété CLR d’une classe qui alias la directive x :Uid.

UsableDuringInitializationAttribute

Documentation de référence :UsableDuringInitializationAttribute

S’applique à : classe

Arguments : booléen. Si elle est utilisée pour l’objectif prévu de l’attribut, la valeur doit être définie sur true.

Indique si le type est généré en haut pendant la création du graphe d’objet XAML. Il s’agit d’un concept avancé, qui est probablement étroitement lié à la définition de votre modèle de programmation. Pour plus d’informations, consultez UsableDuringInitializationAttribute.

ValueSerializerAttribute

Documentation de référence :ValueSerializerAttribute

S’applique à : classe, propriété, méthode (le seul cas de méthode XAML valide est un get accesseur qui prend en charge un membre pouvant être attaché).

Arguments : qui Type spécifie la classe de prise en charge du sérialiseur de valeur à utiliser lors de la sérialisation de toutes les propriétés du type attribut ou de la propriété attribuée spécifique.

ValueSerializer spécifie une classe de sérialisation de valeur qui nécessite plus d’état et de contexte qu’un autre TypeConverter . ValueSerializer peut être associé à un membre attachable en appliquant l’attribut ValueSerializerAttribute sur la méthode d’accesseur statique get pour le membre pouvant être attaché. La sérialisation des valeurs s’applique également aux énumérations, aux interfaces et aux structures, mais pas aux délégués.

WhitespaceSignificantCollectionAttribute

Documentation de référence :WhitespaceSignificantCollectionAttribute

S’applique à : classe, plus précisément les types de collection qui sont censés héberger du contenu mixte, où l’espace blanc autour des éléments d’objet peut être significatif pour la représentation de l’interface utilisateur.

Arguments : Aucun.

WhitespaceSignificantCollectionAttribute indique qu’un type de collection doit être traité comme un espace blanc significatif par un processeur XAML, ce qui influence la construction des nœuds de valeur du flux de nœuds XAML dans la collection. Pour plus d’informations, consultez Le traitement de l’espace blanc en XAML.

XamlDeferLoadAttribute

Documentation de référence :XamlDeferLoadAttribute

S’applique à : classe, propriété.

Arguments : prend en charge deux types de formulaires d’attribution sous forme de chaînes ou de types en tant que Type. Consultez XamlDeferLoadAttribute.

Indique qu’une classe ou une propriété a une utilisation différée de charge pour XAML (par exemple, un comportement de modèle) et signale la classe qui active le comportement de report et son type de destination/contenu.

XamlSetMarkupExtensionAttribute

Documentation de référence :XamlSetMarkupExtensionAttribute

S’applique à : classe

Arguments : nomme le rappel.

Indique qu’une classe peut utiliser une extension de balisage pour fournir une valeur pour une ou plusieurs de ses propriétés et référence un gestionnaire qu’un enregistreur XAML doit appeler avant d’effectuer une opération de jeu d’extensions de balisage sur n’importe quelle propriété de la classe.

XamlSetTypeConverterAttribute

Documentation de référence :XamlSetTypeConverterAttribute

S’applique à : classe

Arguments : nomme le rappel.

Indique qu’une classe peut utiliser un convertisseur de type pour fournir une valeur pour une ou plusieurs de ses propriétés et fait référence à un gestionnaire qu’un enregistreur XAML doit appeler avant d’effectuer une opération de jeu de convertisseurs de types sur n’importe quelle propriété de la classe.

XmlLangPropertyAttribute

Documentation de référence :XmlLangPropertyAttribute

S’applique à : classe

Arguments : chaîne qui spécifie le nom de la propriété à xml:lang alias sur le type attribué.

XmlLangPropertyAttribute signale une propriété du type attribut qui correspond à la directive XML lang . La propriété n’est pas nécessairement de type String , mais doit être assignable à partir d’une chaîne (l’affectation peut être effectuée en associant un convertisseur de type au type de la propriété ou à la propriété spécifique). La propriété doit être en lecture/écriture.

Le scénario de mappage xml:lang est de sorte qu’un modèle objet runtime a accès aux informations de langage spécifiées par XML sans traiter spécifiquement avec un XMLDOM.

La définition hérite de tous les types dérivés qui sont assignables au type de définition. Vous pouvez remplacer la définition sur un type dérivé spécifique en appliquant XmlLangPropertyAttribute le type dérivé spécifique, bien que ce soit un scénario rare.

Les sections suivantes décrivent les attributs liés au code XAML qui ne sont pas appliqués aux types ou aux définitions de membres, mais qui sont plutôt appliqués aux assemblys. Ces attributs sont pertinents pour l’objectif global de définir une bibliothèque qui contient des types personnalisés à utiliser en XAML. Certains attributs n’influencent pas nécessairement directement le flux de nœud XAML, mais sont transmis dans le flux de nœuds pour que d’autres consommateurs utilisent. Les consommateurs pour les informations incluent des environnements de conception ou des processus de sérialisation qui nécessitent des informations d’espace de noms XAML et des informations de préfixe associées. Un contexte de schéma XAML (y compris les services XAML .NET par défaut) utilise également ces informations.

XmlnsCompatibleWithAttribute

Documentation de référence :XmlnsCompatibleWithAttribute

Arguments :

  • Chaîne qui spécifie l’identificateur de l’espace de noms XAML à subsumer.

  • Chaîne qui spécifie l’identificateur de l’espace de noms XAML qui peut subsumer l’espace de noms XAML à partir de l’argument précédent.

    XmlnsCompatibleWithAttribute spécifie qu’un espace de noms XAML peut être subsumé par un autre espace de noms XAML. En règle générale, l’espace de noms XAML inclus est indiqué dans un XmlnsDefinitionAttribute précédemment défini. Cette technique peut être utilisée pour le contrôle de version d’un vocabulaire XAML dans une bibliothèque et pour la rendre compatible avec le balisage précédemment défini par rapport au vocabulaire versionné antérieur.

XmlnsDefinitionAttribute

Documentation de référence :XmlnsDefinitionAttribute

Arguments :

  • Chaîne qui spécifie l’identificateur de l’espace de noms XAML à définir.

  • Chaîne qui nomme un espace de noms CLR. L’espace de noms CLR doit définir des types publics dans votre assembly, et au moins l’un des types d’espaces de noms CLR doit être destiné à une utilisation XAML.

    XmlnsDefinitionAttribute spécifie un mappage par assembly entre un espace de noms XAML et un espace de noms CLR, qui est ensuite utilisé pour la résolution de types par un enregistreur d’objets XAML ou un contexte de schéma XAML.

    Plusieurs XmlnsDefinitionAttribute peuvent être appliqués à un assembly. Cette opération peut être effectuée pour toute combinaison des raisons suivantes :

  • La conception de bibliothèque contient plusieurs espaces de noms CLR pour l’organisation logique de l’accès à l’API au moment de l’exécution ; Toutefois, vous souhaitez que tous les types de ces espaces de noms soient utilisables en XAML en référençant le même espace de noms XAML. Dans ce cas, vous appliquez plusieurs XmlnsDefinitionAttribute attributs à l’aide de la même XmlNamespace valeur, mais des valeurs différentes ClrNamespace . Cela est particulièrement utile si vous définissez des mappages pour l’espace de noms XAML que votre infrastructure ou votre application envisage d’être l’espace de noms XAML par défaut dans l’utilisation courante.

  • La conception de la bibliothèque contient plusieurs espaces de noms CLR et vous souhaitez une séparation délibérée de l’espace de noms XAML entre les utilisations des types dans ces espaces de noms CLR.

  • Vous définissez un espace de noms CLR dans l’assembly et vous souhaitez qu’il soit accessible via plusieurs espaces de noms XAML. Ce scénario se produit lorsque vous prendz en charge plusieurs vocabulaires avec la même base de code.

  • Vous définissez la prise en charge du langage XAML dans un ou plusieurs espaces de noms CLR. Dans ce cas, la XmlNamespace valeur doit être http://schemas.microsoft.com/winfx/2006/xaml.

XmlnsPrefixAttribute

Documentation de référence :XmlnsPrefixAttribute

Arguments :

  • Chaîne qui spécifie l’identificateur d’un espace de noms XAML.

  • Chaîne qui spécifie un préfixe recommandé.

    XmlnsDefinitionAttribute spécifie un préfixe recommandé à utiliser pour un espace de noms XAML. Le préfixe est utile lors de l’écriture d’éléments et d’attributs dans un fichier XAML sérialisé par les services XamlXmlWriterXAML .NET, ou lorsqu’une bibliothèque d’implémentation XAML interagit avec un environnement de conception doté de fonctionnalités d’édition XAML.

    Plusieurs XmlnsPrefixAttribute peuvent être appliqués à un assembly. Cette opération peut être effectuée pour toute combinaison des raisons suivantes :

  • Votre assembly définit des types pour plusieurs espaces de noms XAML. Dans ce cas, définissez différentes valeurs de préfixe pour chaque espace de noms XAML.

  • Vous prendz en charge plusieurs vocabulaires, et vous utilisez des préfixes différents pour chaque vocabulaire et espace de noms XAML.

  • Vous définissez la prise en charge du langage XAML dans l’assembly et avez un XmlnsDefinitionAttribute pour http://schemas.microsoft.com/winfx/2006/xaml. Dans ce cas, vous devez généralement promouvoir le préfixe x.

Remarque

Les services XAML .NET définissent également l’attribut RootNamespaceAttributexaml. Cet attribut est un attribut au niveau de l’assembly pour la prise en charge du système de projet, et il n’est pas pertinent pour les types personnalisés XAML.

Voir aussi