x:Type, extension de balisage

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

Utilisation d'attributs XAML

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

Utilisation d'éléments objet XAML

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

Valeurs XAML

Valeur Description
prefix facultatif. 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. Consultez la section Notes.
typeNameValue Obligatoire. Nom de type résolvable à l’espace de noms XAML par défaut actuel ; ou le préfixe mappé spécifié s’il prefix est fourni.

Notes

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

L’extension x:Type de balisage 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 Type de sortie est que la sortie Type est l’entrée XamlTypeUnderlyingType , après avoir recherché le nécessaire XamlType en fonction du contexte de schéma XAML et du service fourni par le IXamlTypeResolver contexte.

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

Dans des implémentations de framework spécifiques, certaines propriétés qui prennent Type comme 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 couramment utilisée avec cette extension de balisage. Le jeton de chaîne fourni après la chaîne d’identificateur x:Type est assigné en tant que 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 le Name type souhaité, soit contient celle précédée Name d’un préfixe pour un mappage d’espace de noms XAML non par défaut.

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

L’extension de x:Type balisage 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 Les espaces de noms XAML et le 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 x:Type l’extension de balisage. Au lieu de cela, vous pouvez spécifier la valeur en tant que chaîne qui nomme le type. Exemples de ceci et ControlTemplate.TargetTypeStyle.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é par le biais FrameworkElementFactoryde .

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

XAML 2009

XAML 2009 fournit une prise en charge supplémentaire pour les types génériques et modifie le comportement des x:TypeArguments fonctionnalités et 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 la 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 , par x:TypeArgumentsx: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 d’infrastructure 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 du code XAML ne prennent actuellement pas en charge les mots clés et les fonctionnalités XAML 2009.

Voir aussi