x:Static, extension de balisage

Mise à jour : novembre 2007

Fait référence à une entité de code par valeur statique définie conformément à CLS (Common Language Specification). La propriété référencée est évaluée avant de charger le reste de la page XAML et peut servir à fournir la valeur d'une propriété en XAML.

Utilisation des attributs XAML

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

Utilisation des éléments d'objet XAML

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

Valeurs XAML

prefix

Facultatif. Préfixe qui mappe un espace de noms xmlns non défini par défaut. Voir Notes.

typeName

Obligatoire. Type qui définit le membre statique souhaité.

staticMemberName

Obligatoire. Nom du membre de valeur statique souhaité (constante, propriété statique, champ ou valeur d'énumération).

Notes

L'entité de code référencée doit correspondre à l'un des éléments suivants :

  • constante ;

  • propriété statique ;

  • champ ;

  • valeur d'énumération.

La spécification d'une autre entité de code, comme une propriété non statique, entraîne une erreur de compilation.

Des références x:Static peuvent être effectuées à des champs ou propriétés statiques situés en dehors de l'espace de noms xmlns par défaut. Cela nécessite toutefois un mappage de préfixe. Pour ce faire, vous devez définir l'espace de noms xmlns par défaut pour un élément XAML donné en tant qu'attribut. En règle générale, cette opération est effectuée au niveau de l'élément racine afin que le xmlns s'applique à tous les éléments situés sous la racine. En règle générale, l'espace de noms XML par défaut que vous utilisez dans le cadre de la programmation Windows Presentation Foundation (WPF) correspond à l'espace de noms WPF. Vous devez mapper un préfixe dans l'un des cas suivants :

  • Vous référencez un type qui existe dans Microsoft .NET Framework, mais qui ne fait pas partie de l'espace de noms WPF. Cette situation est courante lors de l'utilisation de x:Static. Par exemple, vous pouvez utiliser une référence x:Static avec un mappage de préfixe sur l'espace de noms CLR System de manière à référencer les propriétés statiques de la classe Environment.

  • Vous référencez un type d'un assembly personnalisé.

  • Vous référencez un type qui existe dans un assembly WPF, mais qui se trouve dans un espace de noms CLR qui n'a pas été mappé pour faire partie de l'espace de noms WPF. Le mappage est effectué par les définitions de cet assembly. Les espaces de noms CLR non mappés sont courants pour les définitions de classe WPF dans des espaces de noms CLR qui ne sont généralement pas conçus pour XAML, comme System.Windows.Threading.

Pour plus d'informations sur les préfixes et les espaces de noms XML, consultez Espaces de noms XAML et mappage d'espace de noms.

Vous pouvez utiliser des références x:Static qui ne correspondent pas directement au type de la valeur d'une propriété, mais qui peuvent être évaluées sur ce type. Par exemple, vous pouvez utiliser une référence x:Static pour obtenir une valeur d'une énumération ou en dehors d'une propriété statique telle que les différentes couleurs et les différents pinceaux définis par SystemColors. Les références x:Static peuvent potentiellement servir à définir une propriété dans la syntaxe XAML, même celles qui reposent en réalité sur une propriété avec un type référence. En effet, la gestion réelle de la valeur x:Static évaluée peut varier selon les comportements du convertisseur de type de la propriété où la valeur statique est appliquée.

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.

x:Static peut être utilisé dans la syntaxe d'élément objet. Dans ce cas, la valeur de la propriété Member doit être spécifiée.

x:Static peut également être utilisé dans une utilisation d'attribut en clair qui spécifie la propriété Member en tant que paire propriété=valeur :

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

L'utilisation en clair est souvent utile pour les extensions qui comportent plusieurs propriétés définissables ou lorsque certaines propriétés sont facultatives. x:Static ne comportant qu'une seule propriété définissable (obligatoire), cette utilisation en clair n'est pas classique.

Dans l'implémentation de processeur XAML WPF, la gestion de cette extension de balisage est définie par la classe StaticExtension.

x:Static est une extension de balisage. Les extensions de balisage sont en règle générale implémentées quand il est nécessaire que les valeurs d'attribut soient autre chose que des valeurs littérales ou des noms de gestionnaire, et que l'exigence est plus globale que le simple fait de mettre des convertisseurs de type sur certains types ou propriétés. Toutes les extensions de balisage en XAML utilisent les caractères { et } dans leur syntaxe d'attributs, qui est, pour un processeur XAML, la convention selon laquelle une extension de balisage doit traiter l'attribut. Pour plus d'informations sur les extensions de balisage en général, consultez Extensions de balisage et XAML.

Voir aussi

Concepts

Application d'un style et création de modèles

Vue d'ensemble du langage XAML

Extensions de balisage et XAML

Référence

x:Type, extension de balisage