Partager via


x:TypeArguments, directive

Passe les arguments de type contraignant d'un générique au constructeur du type générique.

Utilisation d'attributs XAML

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

Valeurs XAML

object

Déclaration d'élément objet d'un type XAML, qui est stockée par un type générique CLR. Si object fait référence à un type XAML qui n'est pas d'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 type XAML sous forme de chaînes, ce qui fournit les arguments de type pour le type CLR générique. Consultez les Remarques pour obtenir des remarques de syntaxe supplémentaires.

Notes

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

Vous pouvez spécifier plusieurs noms de types XAML à l'aide d'une virgule de délimitation.

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 par des parenthèses ().

Notez que cette définition de x:TypeArguments est spécifique aux services XAML .NET Framework et à l'utilisation du stockage CLR. Une définition relative au langage se trouve dans [MS-XAML] Section 5.3.11.

Exemple d'utilisation

Pour ces exemples, supposez que les définitions d'espaces 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 nouveau List<T> avec un argument de type String.

Dictionary<String,String>

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

Queue<KeyValuePair<String,String>>

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

XAML 2006 et utilisations XAML génériques WPF

Pour une utilisation XAML 2006, et un XAML utilisé pour les applications WPF, les restrictions suivantes existent pour x:TypeArguments et les utilisations de type générique 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 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. C'est le cas notamment de PageFunction<T>. Le principal scénario de prise en charge de l'utilisation du XAML générique dans WPF sont les fonctions de page.

  • L'élément objet de l'élément racine XAML pour le type générique doit également déclarer une classe partielle à l'aide de x:Class. Ceci est vrai, même lors de la définition d'une action de génération WPF

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

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

Dans les services XAML de .NET Framework pour XAML 2006 ou XAML 2009, les restrictions WPF sur l'utilisation générique de XAML sont assouplies. Vous pouvez instancier un élément objet générique à toute 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 le langage XAML 2009 au lieu du mappage des types de base CLR pour obtenir des types XAML pour les primitives de langage commun, vous pouvez utiliser les types intégrés des primitives de langage XAML commun en tant qu'éléments d'informations dans typeString. Par exemple, vous pouvez déclarer les éléments suivants (les mappages de préfixes ne sont pas indiqués, mais x est l'espace de noms XAML du langage XAML 2009) :

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

Dans WPF et lorsque vous ciblez .NET Framework version 4, vous pouvez utiliser les fonctionnalités de XAML 2009 avec x:TypeArguments mais uniquement pour le XAML libre (XAML qui n'est pas compilé par balisage). Le XAML compilé par balisage pour WPF et la forme de langage BAML de XAML ne prend actuellement pas en charge les mots clés et les fonctionnalités XAML 2009. Si vous avez besoin de compiler le XAML par balisage, vous devez fonctionner selon les restrictions notées dans la section « Utilisations de XAML 2006 et de XAML WPF générique ».

Voir aussi

Référence

x:Class, directive

x:Type, extension de balisage

Autres ressources

Types intégrés pour les primitives associées au langage XAML courant

Génériques en XAML