Bonjour,
J'ai un projet (basé sur le runtime 4.0) que je dois internationaliser.
Le choix s'est porté sur l'utilisation de fichiers resx (il n'y a que des chaînes de caractères à mettre en ressource).
J'ai déjà mis en ressource les fichiers de code behind et les fichiers xaml d'une application WPF mais je bloque sur la mise en ressource des UserControl.
Ces UserControls sont dans un projet "Bibliothèque de classes" dont l'espace de nom est "MyLib".
Le fichier resx est dans "MyLib.Ressources" et bien mis en modificateur d'accès Public.
Dans le code-behind du UserControl, je peux accéder à une ressource via le code suivant par exemple :ça fonctionne.
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 [...] using MyLib.Ressources; namespace MyLib.Logs { public partial class ucLogViewer : UserControl { [...] public ucLogViewer() { InitializeComponent(); txblStatus.Text = Strings.MyTitle; [...] } [...] } }
Du côté xaml, j'ai ceci :(J'ai supprimé les éléments de positionnement et les évènements pour que ce soit plus lisible)
Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 <UserControl x:Class="MyLib.Logs.ucLogViewer" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:res="clr-namespace:MyLib.Ressources" mc:Ignorable="d" d:DesignHeight="250" d:DesignWidth="500"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <GroupBox Header="Afficher" Name="groupBox1"> <WrapPanel <CheckBox Name="chbDisplayInfo" IsChecked="True" Content="{x:Static res:Strings.MyTitle}"></CheckBox> <CheckBox Name="chbDisplayAvert" IsChecked="True">Avertissements</CheckBox> <CheckBox Name="chbDisplayError" IsChecked="True">Erreurs</CheckBox> </WrapPanel> </GroupBox> <TextBlock Name="txblStatus" Text="un message" Width="Auto"/> </Grid> </UserControl>
En gras ce qui concerne l'utilisation du resx.
sur "res:Strings;LogVwUIInfo", Visual Studio m'annonce dans sa liste d'erreursLa casse est bonne, preuve en est dans le code behind.Erreur de build inconnue, 'MC3050 : impossible de trouver le type 'Strings'. Notez que les noms de type respectent la casse.'
J'ai pourtant utilisé la même méthodologie dans une application WPF et je n'ai eu aucun problème.
Avez-vous une idée de ce qui n'irait pas ?
Je suis preneur de toutes les pistes.
Arnaud D.
Partager