x:Static, extension de balisage

Fait référence à toute entité de code statique par valeur définie de manière conforme à CLS (Common Language Specification). La propriété statique référencée peut être utilisée pour fournir la valeur d’une propriété en XAML.

Utilisation d'attributs XAML

<object property="{x:Static prefix:typeName.staticMemberName}" .../>

Valeurs XAML

Valeur Description
prefix facultatif. Préfixe qui fait référence à un espace de noms XAML mappé et non par défaut. prefix est affiché explicitement dans l’utilisation, car vous référencez rarement des propriétés statiques provenant d’un espace de noms XAML par défaut. Consultez la section Notes.
typeName Obligatoire. Nom du type qui définit le membre statique souhaité.
staticMemberName Obligatoire. Nom du membre de valeur statique souhaité (une constante, une propriété statique, un champ ou une valeur d’énumération).

Notes

L’entité de code référencée doit être l’une des suivantes :

  • Constante
  • Propriété statique
  • Champ
  • Valeur d’énumération

La spécification d’une autre entité de code, telle qu’une propriété non statique, provoque une erreur au moment de la compilation si le code XAML est compilé ou une exception d’analyse du temps de chargement XAML.

Vous pouvez faire x:Static des références à des champs statiques ou des propriétés qui ne se trouvent pas dans l’espace de noms XAML par défaut pour le document XAML actuel. Toutefois, cela nécessite un mappage de préfixe. Les espaces de noms XAML sont presque toujours définis sur l’élément racine du document XAML.

Les opérations de recherche pour les propriétés statiques peuvent être effectuées par les services XAML .NET et ses lecteurs XAML et enregistreurs XAML, lorsqu’elles s’exécutent avec le contexte de schéma XAML par défaut. Ce contexte de schéma XAML peut utiliser la réflexion CLR pour fournir les valeurs statiques nécessaires pour la construction du graphe d’objets. Le typeName nom que vous spécifiez est en fait un nom de type XAML, et non un nom de type CLR, bien qu’il s’agit essentiellement du même nom lors de l’utilisation du contexte de schéma XAML par défaut ou lors de l’utilisation de tous les frameworks XAML basés sur CLR existants.

Soyez prudent lorsque vous effectuez x:Static des références qui ne sont pas directement le type de valeur d’une propriété. Dans la séquence de traitement XAML, les valeurs fournies à partir d’une extension de balisage n’appellent pas de conversion de valeur supplémentaire. Cela est vrai même si votre x:Static référence crée une chaîne de texte et qu’une conversion de valeur pour les valeurs d’attribut en fonction de la chaîne de texte se produit généralement pour ce membre spécifique ou pour toutes les valeurs de membre du type de retour.

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:Static est assigné en tant que valeur Member de la classe d’extension StaticExtension sous-jacente.

Il existe deux autres utilisations XAML qui sont techniquement possibles. Toutefois, ces utilisations sont moins courantes, car elles sont inutilement détaillées :

  1. Syntaxe de l’élément Objet.

    <x:Static Member="prefix:typeName.staticMemberName" ... />
    
  2. Syntaxe d’attribut avec une propriété membre explicite pour la chaîne d’initialisation.

    <object property="{x:Static Member=prefix:typeName.staticMemberName}" ... />
    

Dans l’implémentation des services XAML .NET, la gestion de cette extension de balisage est définie par la StaticExtension classe.

x:Static est une extension de balisage. Toutes les extensions de balisage en XAML utilisent les caractères et } les { caractères de leur syntaxe d’attribut, c’est-à-dire la convention par laquelle un processeur XAML reconnaît qu’une extension de balisage doit fournir une valeur. Pour plus d’informations sur les extensions de balisage, consultez Markup Extensions for XAML Overview.

Notes d’utilisation WPF

L’espace de noms XAML par défaut que vous utilisez pour la programmation WPF ne contient pas de nombreuses propriétés statiques utiles, et la plupart des propriétés statiques utiles sont prises en charge, telles que les convertisseurs de type qui facilitent l’utilisation sans nécessiter {x:Static} . Pour les propriétés statiques, vous devez mapper un préfixe pour un espace de noms XAML si l’une des valeurs suivantes est true :

  • Vous référencez un type qui existe dans WPF, mais qui ne fait pas partie de l’espace de noms XAML par défaut pour WPF (http://schemas.microsoft.com/winfx/2006/xaml/presentation). Il s’agit d’un scénario assez courant pour l’utilisation x:Static. Par exemple, vous pouvez utiliser une x:Static référence avec un mappage d’espace de noms XAML à l’espace de noms CLR et à l’assembly System mscorlib pour référencer les propriétés statiques de la Environment classe.

  • Vous référencez un type à partir d’un assembly personnalisé.

  • Vous référencez un type qui existe dans un assembly WPF, mais ce type se trouve dans un espace de noms CLR qui n’a pas été mappé pour faire partie de l’espace de noms XAML par défaut WPF. Le mappage des espaces de noms CLR dans l’espace de noms XAML par défaut pour WPF est effectué par des définitions dans les différents assemblys WPF (pour plus d’informations sur ce concept, consultez Espaces de noms XAML et Mappage d’espaces de noms pour LE XAML WPF). Les espaces de noms CLR non mappés peuvent exister si cet espace de noms CLR est composé principalement de définitions de classes qui ne sont généralement pas destinées au langage XAML, par System.Windows.Threadingexemple .

Pour plus d’informations sur l’utilisation de préfixes et d’espaces de noms XAML pour WPF, consultez Les espaces de noms XAML et le mappage d’espaces de noms pour WPF XAML.

Voir aussi