Binding .Resx et XAML30 mars 2010

Boîte à outils

Voici comment réaliser un Binding entre des constantes définies dans un fichier de ressources (.resx) et une interface graphique WPF (.xaml).

Tout d’abord, ajouter un prefixe vers le namespace où se trouve le fichier .resx dans les attributs du noeud principal (.xaml):

xmlns:properties="clr-namespace:WpfApplication1.Properties"

Ensuite, afficher les propriétés du fichier de ressource concerné, ici j’ai créé un fichier nommé « Support.resx » contenant des informations statiques pour une fenêtre « Support.xaml ».

Fichier de ressource (.resx)

Modifiez la propriété « Custom Tool » qui contient par défaut la valeur « ResXFileCodeGenerator » pour lui affecter la valeur « PublicResXFileCodeGenerator », ceci afin de rendre publique (et non internal) la classe représentant le fichier de ressource.

Propriété Custom Tool

Le Binding ne sera possible que si la classe est en accès public. Le fait de changer le nom de la sorte, ajoute le mot clé public devant le nom de la classe (ici « Support.Designer.cs ») à la place de internal.

Modificateur d'accès public .resx

Il est également possible de modifier l’accesseur de la classe lorsque vous vous trouvez sur le fichier « Support.resx » ouvert. Un menu déroulant nommé « Access Modifier » permet de changer le type d’accès:

Fichier de ressource – Access Modifier

Puis, dans le code XAML, prenons par exemple un simple TextBlock, il suffit d’écrire ceci:

<TextBlock Text="{x:Static properties:Support.TeamPhone}" />

Vous pouvez utiliser cette syntaxe pour accéder à tout membre statique publique d’une classe de votre projet.

C’est terminé !