Share via


x:Name, attribut

Mise à jour : novembre 2007

Identifie de manière unique des éléments objet dans le but d'accéder à l'élément instancié à partir du code-behind ou du code général. Une fois appliqué à un modèle de programmation de stockage, x:Name peut être considéré comme un équivalent de la variable qui contient une référence d'objet, telle que retournée par un constructeur.

Utilisation des attributs XAML

<object x:Name="XAMLNameValue".../>

Valeurs XAML

XAMLNameValue

Chaîne qui se conforme aux restrictions de la XamlName, grammaire.

Notes

Dans une configuration de génération standard pour un projet d'application WPF qui utilise le XAML, les classes partielles et le code-behind, le x:Name spécifié devient le nom d'un champ créé dans le code sous-jacent lors du traitement du XAML et ce champ contient une référence à l'objet.

Par défaut, le champ créé est interne. Vous pouvez modifier l'accès au champ en spécifiant l'attribut x:FieldModifier.

Pour une application qui utilise les cibles Microsoft Visual Basic .NET et inclut des fichiers XAML, une propriété de référence séparée est créée pendant la compilation. Elle ajoute le mot clé WithEvents à tous les éléments qui ont un attribut x:Name, pour prendre en charge la syntaxe Handles pour les délégués de gestionnaires d'événements. Cette propriété est toujours publique. Pour plus d'informations, consultez Gestion des événements Visual Basic et WPF.

x:Name doit être unique dans une portée de nom. Dans la plupart des cas XAML, la portée de nom principale est définie par les éléments qui figurent dans une seule page XAML. Des portées de nom discrètes supplémentaires sont définies par tout modèle également défini dans cette page. Pour plus d'informations sur les portées de nom, consultez Portées de nom WPF.

x:Name est utilisé par un processeur XAML pour enregistrer un nom dans une portée de nom, même lorsque la page n'est pas compilée (par exemple, XAML libre). Ceci est dû au fait que x:Name est potentiellement nécessaire pour la liaison ElementName. Pour plus d'informations, consultez Vue d'ensemble de la liaison de données.

x:Name ne peut pas être appliqué dans certaines portées dans le cadre de la programmation WPF. Par exemple, les éléments figurant dans un ResourceDictionary ne peuvent pas avoir de noms, car ResourceDictionary se comporte d'une manière spéciale en s'autodéfinissant en tant que portée de nom XAML et en retournant Non implémenté pour les principales API INameScope.

Les règles d'autorisation de x:Name et la portée d'unicité sont définies par l'implémentation d'infrastructure Windows Presentation Foundation (WPF) sous-jacente qui divise les différents éléments de balisage en plages NameScope distinctes, telles que les dictionnaires de ressources, l'arborescence logique créée par le XAML au niveau de la page, les modèles etc.

Certaines applications d'infrastructure WPF peuvent éviter toute utilisation de l'attribut x:Name, car la propriété de dépendance Name spécifiée dans l'espace de noms WPF pour plusieurs classes de base importantes (telles que FrameworkElement/FrameworkContentElement) poursuit ce même objectif. Dans certains scénarios d'infrastructure et XAML communs, le code d'accès à un élément sans propriété Name est nécessaire, surtout dans certaines classes d'animation et de prise en charge des tables de montage séquentiel. Par exemple, vous devez spécifier x:Name sur des chronologies et transformations créées en XAML, si vous projetez de les référencer à partir du code.

Si Name est disponible en tant que propriété sur la classe, Name et x:Name peuvent être utilisés indifféremment en tant qu'attributs, mais une erreur sera générée si les deux sont spécifiés sur le même élément.

Pour les éléments personnalisés, la propriété (qui peut être une propriété CLR ou une propriété de dépendance) qui mappe à x:Name sur tout objet donné peut être établie ou modifiée en désignant cette propriété avec le RuntimeNamePropertyAttribute dans le code de déclaration de propriété.

Name peut être défini à l'aide de la syntaxe d'attribut XAML et dans du code utilisant SetValue. Notez cependant qu'il arrive parfois que la définition de la propriété Name dans le code ne crée pas la référence de champ représentative dans la portée de nom. Au lieu d'essayer de définir Name dans le code, utilisez des méthodes NameScope à partir du code, par rapport à la portée de nom appropriée.

Name peut également être défini à l'aide de la syntaxe d'élément de propriété XAML avec du texte interne, mais cela est plutôt rare. x:Name ne peut pas être défini dans une syntaxe d'élément de propriété XAML ni dans du code utilisant SetValue ; il peut uniquement être défini à l'aide de la syntaxe d'attribut sur des éléments.

Voir aussi

Concepts

Arborescences dans WPF

Référence

Name

Name