Partager via


x :Type Markup Extension

Fournit l’objet CLR Type qui est le type sous-jacent d’un type XAML spécifié.

Utilisation des attributs XAML

<object property="{x:Type prefix:typeNameValue}" .../>

Utilisation des éléments d’objet XAML

<x:Type TypeName="prefix:typeNameValue"/>

Valeurs XAML

Valeur Description
prefix Optionnel. Préfixe qui mappe un espace de noms XAML non défini par défaut. La spécification d’un préfixe n’est fréquemment pas nécessaire. Voir les remarques.
typeNameValue Obligatoire. Nom de type résolvable à l’espace de noms XAML par défaut actuel ; ou le préfixe mappé spécifié si prefix est fourni.

Remarques

L’extension de balisage x:Type a une fonction similaire à l’opérateur typeof() en C# ou à l’opérateur GetType dans Microsoft Visual Basic.

L’extension de balisage x:Type fournit un comportement de conversion à partir de chaînes pour les propriétés qui prennent le type Type. L’entrée est un type XAML. La relation entre le type XAML d’entrée et le CLR de sortie Type est que la sortie Type est la UnderlyingType de l’entrée XamlType, après avoir recherché les XamlType nécessaires en fonction du contexte de schéma XAML et du service IXamlTypeResolver fourni par le contexte.

Dans les services XAML .NET, la gestion de cette extension de balisage est définie par la classe TypeExtension.

Dans des implémentations de framework spécifiques, certaines propriétés qui prennent Type en tant que valeur peuvent accepter le nom du type directement (la valeur de chaîne du type Name). Toutefois, l’implémentation de ce comportement est un scénario complexe. Pour obtenir des exemples, consultez la section « Notes d’utilisation WPF » qui suit.

La syntaxe d’attribut est la syntaxe la plus courante utilisée avec cette extension de balisage. Jeton de chaîne fourni après l’affectation de la chaîne d’identificateur x:Type comme valeur TypeName de la classe d’extension TypeExtension sous-jacente. Sous le contexte de schéma XAML par défaut pour les services XAML .NET, qui est basé sur les types CLR, la valeur de cet attribut est soit la Name du type souhaité, soit contient cette Name précédée d’un préfixe pour un mappage d’espace de noms XAML non par défaut.

L’extension de balisage x:Type peut être utilisée dans la syntaxe de l’élément objet. Dans ce cas, la spécification de la valeur de la propriété TypeName est nécessaire pour initialiser correctement l’extension.

L’extension de balisage x:Type peut également être utilisée comme attribut détaillé ; toutefois, cette utilisation n’est pas classique : <object property="{x:Type TypeName=typeNameValue}" .../>

Notes d’utilisation WPF

Mappage de type et d’espace de noms XAML par défaut

L’espace de noms XAML par défaut pour la programmation WPF contient la plupart des types XAML dont vous avez besoin pour les scénarios XAML classiques ; par conséquent, vous pouvez souvent éviter les préfixes lors du référencement des valeurs de type XAML. Vous devrez peut-être mapper un préfixe si vous référencez un type à partir d’un assembly personnalisé ou pour les types qui existent dans un assembly WPF, mais proviennent d’un espace de noms CLR qui n’a pas été mappé à l’espace de noms XAML par défaut. Pour plus d’informations sur les préfixes, les espaces de noms XAML et le mappage des espaces de noms CLR, consultez espaces de noms XAML et mappage d’espaces de noms pour wpF XAML.

Propriétés de type qui prennent en charge Typename-as-String

WPF prend en charge les techniques qui permettent de spécifier la valeur de certaines propriétés de type Type sans nécessiter d’utilisation de l’extension de balisage x:Type. Au lieu de cela, vous pouvez spécifier la valeur en tant que chaîne qui nomme le type. Les exemples suivants sont ControlTemplate.TargetType et Style.TargetType. La prise en charge de ce comportement n’est pas fournie par le biais de convertisseurs de type ou d’extensions de balisage. Au lieu de cela, il s’agit d’un comportement de report implémenté via FrameworkElementFactory.

Silverlight prend en charge une convention similaire. En fait, Silverlight ne prend actuellement pas en charge {x:Type} dans sa prise en charge du langage XAML et n’accepte pas les utilisations {x:Type} en dehors de quelques circonstances qui sont destinées à prendre en charge WPF-Silverlight migration XAML. Par conséquent, le comportement typename-as-string est intégré à toutes les évaluations de propriétés natives Silverlight où un Type est la valeur.

XAML 2009

XAML 2009 fournit une prise en charge supplémentaire des types génériques et modifie le comportement des fonctionnalités de x:TypeArguments et de x:Type pour fournir cette prise en charge.

  • x:TypeArguments et l’élément objet associé pour une instanciation d’objet générique peut se trouver sur des éléments autres que la racine. Pour plus d’informations, consultez la section « XAML 2009 » de directive x :TypeArguments.

  • XAML 2009 prend en charge une syntaxe pour spécifier la contrainte d’un type générique dans le balisage. Cela peut être utilisé par x:TypeArguments, par x:Typeou par les deux fonctionnalités en combinaison.

  • L’implémentation XAML WPF lors du traitement xaml 2009 pour le chargement ajoute également cette fonctionnalité au comportement de conversion de type implicite pour certaines propriétés de framework qui utilisent le type Type.

Dans WPF, vous pouvez utiliser des fonctionnalités XAML 2009, 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.

Voir aussi