x :Static Markup Extension
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 des attributs XAML
<object property="{x:Static prefix:typeName.staticMemberName}" .../>
Valeurs XAML
Valeur | Description |
---|---|
prefix |
Optionnel. Préfixe qui fait référence à un espace de noms XAML mappé et non par défaut.
prefix s’affiche 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. Voir les remarques. |
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). |
Remarques
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
références à des champs statiques ou des propriétés qui ne figurent 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
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
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 référence x:Static
crée une chaîne de texte et qu’une conversion de valeur pour les valeurs d’attribut basées sur 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 courante utilisée avec cette extension de balisage. Jeton de chaîne fourni après l’affectation de la chaîne d’identificateur x:Static
comme 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 :
Syntaxe de l’élément Objet.
<x:Static Member="prefix:typeName.staticMemberName" ... />
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 classe StaticExtension.
x:Static
est une extension de balisage. Toutes les extensions de balisage en XAML utilisent les caractères {
et }
dans leur syntaxe d’attribut, c’est-à-dire la convention selon 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 Vue d’ensemble des extensions de balisage pour XAML.
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 prennent en charge des convertisseurs de types qui facilitent l’utilisation sans nécessiter de {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 dex:Static
. Par exemple, vous pouvez utiliser une référencex:Static
avec un mappage d’espace de noms XAML à l’espace de noms CLR System et à l’assembly mscorlib pour référencer les propriétés statiques de la classe Environment.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 wpF XAML). 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, comme System.Windows.Threading.
Pour plus d’informations sur l’utilisation des préfixes et des espaces de noms XAML pour WPF, consultez espaces de noms XAML et mappage d’espaces de noms pour lesXAML WPF.
Voir aussi
.NET Desktop feedback