Partager via


x :TypeArguments, directive

Transmet les arguments de type contraignants d’un générique au constructeur du type générique.

Utilisation des attributs XAML

<object x:TypeArguments="typeString" .../>

Valeurs XAML

Valeur Description
object Déclaration d’élément d’objet d’un type XAML, qui est soutenu par un type générique CLR. Si object fait référence à un type XAML qui ne provient pas de l’espace de noms XAML par défaut, object nécessite un préfixe pour indiquer l’espace de noms XAML où object existe.
typeString Chaîne qui déclare un ou plusieurs noms de types XAML en tant que chaînes, qui fournit les arguments de type pour le type générique CLR. Consultez les remarques pour obtenir des notes de syntaxe supplémentaires.

Remarques

Dans la plupart des cas, les types XAML utilisés comme élément d’informations dans une chaîne typeString sont préfixés. Les types classiques de contraintes génériques CLR (par exemple, Int32 et String) proviennent des bibliothèques de classes de base CLR. Ces bibliothèques ne sont pas mappées aux espaces de noms XAML par défaut spécifiques à l’infrastructure et nécessitent donc un mappage de préfixe pour l’utilisation xaml.

Vous pouvez spécifier plusieurs noms de type XAML à l’aide d’un délimiteur de virgules.

Si les contraintes génériques elles-mêmes utilisent des types génériques, les arguments de type de contrainte imbriqué peuvent être contenus entre parenthèses ().

Notez que cette définition de x:TypeArguments est spécifique aux services XAML .NET et à l’aide du stockage CLR. Vous trouverez une définition au niveau du langage dans [MS-XAML] Section 7.3.11.

Exemples d’utilisation

Pour ces exemples, supposons que les définitions d’espace de noms XAML suivantes sont déclarées :

xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib"

Répertorier<chaîne>

<scg:List x:TypeArguments="sys:String" ...> instancie une nouvelle List<T> avec un argument de type String.

Chaîne<de dictionnaire,chaîne>

<scg:Dictionary x:TypeArguments="sys:String,sys:String" ...> instancie une nouvelle Dictionary<TKey,TValue> avec deux arguments de type String.

File d’attente<KeyValuePair<String,String>>

<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...> instancie une nouvelle Queue<T> qui a une contrainte de KeyValuePair<TKey,TValue> avec les arguments de type de contrainte interne String et String.

Utilisations XAML génériques XAML 2006 et WPF

Pour l’utilisation de XAML 2006 et XAML utilisée pour les applications WPF, les restrictions suivantes existent pour les utilisations de type x:TypeArguments et génériques à partir de XAML en général :

  • Seul l’élément racine d’un fichier XAML peut prendre en charge une utilisation XAML générique qui fait référence à un type générique.

  • L’élément racine doit être mappé à un type générique avec au moins un argument de type. Par exemple, PageFunction<T>. Les fonctions de page sont le scénario principal pour la prise en charge de l’utilisation générique XAML dans WPF.

  • L’élément d’objet XAML de l’élément racine pour le générique doit également déclarer une classe partielle à l’aide de x:Class. Cela est vrai même si vous définissez une action de génération WPF.

  • x:TypeArguments ne peut pas référencer les contraintes génériques imbriquées.

XAML 2009 ou XAML 2006 sans dépendance WPF 3.0 ou WPF 3.5

Dans les services XAML .NET pour XAML 2006 ou XAML 2009, les restrictions liées à WPF sur l’utilisation XAML générique sont assouplies. Vous pouvez instancier un élément objet générique à n’importe quelle position dans le balisage XAML que le système de type de stockage et le modèle objet peuvent prendre en charge.

Si vous utilisez XAML 2009 au lieu de mapper les types de base CLR pour obtenir des types XAML pour les primitives de langage commun, vous pouvez utiliser types intégrés pour les primitives de langage XAML courants en tant qu’éléments d’informations dans un typeString. Par exemple, vous pouvez déclarer ce qui suit (mappages de préfixes non affichés, mais x est l’espace de noms XAML du langage XAML pour XAML 2009) :

<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>

Dans WPF et lors du ciblage de .NET Framework 4 ou .NET Core 3.0 (ou version ultérieure), vous pouvez utiliser des fonctionnalités XAML 2009 avec x:TypeArguments, mais uniquement pour xaml libre (XAML qui n’est pas compilé par balisage). Le code XAML compilé par balisage pour WPF et la forme BAML de XAML ne prennent pas actuellement en charge les mots clés et fonctionnalités XAML 2009. Si vous devez compiler le code XAML, vous devez utiliser les restrictions indiquées dans la section XAML 2006 et WPF Generic XAML Usage. BAML est uniquement pris en charge dans .NET Framework.

Voir aussi