x:FieldModifier, directive
Modifie le comportement de compilation XAML, de manière à ce que les champs des références d'objet nommées soient définis avec un accès TypeAttributes.Public plutôt qu'avec le comportement par défaut TypeAttributes.NotPublic.
Utilisation d'attributs XAML
<object x:FieldModifier="Public".../>
Valeurs XAML
Public |
La chaîne exacte à passer pour spécifier TypeAttributes.Public et non TypeAttributes.NotPublic varie selon le langage de programmation code-behind utilisé. Voir Notes. |
Dépendances
Si une production XAML utilise x:FieldModifier n'importe où, l'élément racine de cette production XAML doit déclarer un x:Class, directive.
Notes
x:FieldModifier n'est pas pertinent pour déclarer le niveau d'accès général d'une classe ou de ses membres. Cela s'applique uniquement au comportement de traitement XAML lorsqu'un objet XAML particulier qui fait partie d'une production XAML est traité, et devient un objet qui est potentiellement accessible dans le graphique d'objet d'une application. Par défaut, la référence de champ pour un tel objet reste privée, ce qui empêche les utilisateurs de contrôles de modifier directement le graphique d'objet. À la place, les utilisateurs de contrôles doivent plutôt modifier le graphique d'objet à l'aide de modèles standard activés par des modèles de programmation, tels que l'obtention de la racine de disposition, de collections d'éléments enfants, de propriétés publiques dédiées, etc.
La valeur de l'attribut x:FieldModifier varie en fonction du langage de programmation et son objectif peut varier dans certaines infrastructures spécifiques. La chaîne à utiliser dépend de l'implémentation par chaque langage de son CodeDomProvider et des convertisseurs de type qu'il retourne pour définir les significations de TypeAttributes.Public et TypeAttributes.NotPublic, et varie également selon que ce langage respecte la casse ou pas.
Pour C#, la chaîne à passer pour désigner TypeAttributes.Public est public.
Pour Microsoft Visual Basic .NET, la chaîne à passer pour désigner TypeAttributes.Public est Public.
Pour C++/CLI, aucune cible n'existe actuellement pour XAML ; par conséquent, la chaîne à passer est indéfinie.
Vous pouvez également spécifier TypeAttributes.NotPublic (internal dans C#, Friend in Visual Basic), mais spécifiant que TypeAttributes.NotPublic est inhabituel car NotPublic est déjà le comportement par défaut.
TypeAttributes.NotPublic est le comportement par défaut car il est rare que le code en dehors de l'assembly qui a compilé le code XAML ait besoin d'accéder à un élément créé par XAML. L'architecture de sécurité WPF ainsi que le comportement de compilation XAML ne déclarera pas les champs qui stockent des instances d'élément comme publics, à moins que vous ne définissiez spécifiquement x:FieldModifier pour autoriser l'accès public.
x:FieldModifier est uniquement pertinent pour les éléments avec un x:Name, directive, car ce nom est utilisé pour faire référence au champ lorsqu'il est public.
Par défaut, la classe partielle de l'élément racine est publique ; toutefois, vous pouvez la rendre non publique à l'aide de x:ClassModifier, directive. L'x:ClassModifier, directive affecte également le niveau d'accès de l'instance de la classe d'élément racine. Vous pouvez placer x:Name et x:FieldModifier dans l'élément racine, mais cela permet uniquement de créer une copie du champ public de l'élément racine, le niveau d'accès de la classe d'élément racine réel étant toujours contrôlé par x:ClassModifier, directive.