x:TypeArguments, directive

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

Utilisation d'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 elle 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 il 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.

Notes

Dans la plupart des cas, les types XAML utilisés comme élément d’informations dans une typeString chaîne 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 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"

List<String>

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

Chaîne de<dictionnaire, chaîne>

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

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

<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...> instancie un nouveau Queue<T> qui a une contrainte avec KeyValuePair<TKey,TValue> les arguments String de type de contrainte interne 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 x:TypeArguments les utilisations de type générique à 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 x:Classde . 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 des types intégrés pour les primitives du langage XAML commun comme é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 les fonctionnalités XAML 2009 avec, mais x:TypeArguments uniquement pour le code XAML libre (XAML qui n’est pas compilé par balisage). Le code XAML compilé par balisage pour WPF et la forme BAML du code XAML ne prennent actuellement pas en charge les mots clés et les 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 Utilisations XAML génériques. BAML est uniquement pris en charge dans .NET Framework.

Voir aussi