Localisation via le XAML affiche un vide
-
vendredi 30 mars 2012 05:26
Bonjour,
Je ne parviens pas à traduire le MenuItem de mon contextMenu :
<!--Élément deux de panorama--> <controls:PanoramaItem x:Name="_titlePivot2" Header="mes projets"> <Grid> <ListBox Margin="12,0,12,0" x:Name="_ListBoxMesProjets" SelectionChanged="ListBoxMesProjets_SelectionChanged"> <ListBox.ItemTemplate> <DataTemplate> <local:ItemProjet x:Name="_cMenu"> <toolkit:ContextMenuService.ContextMenu> <toolkit:ContextMenu > <toolkit:MenuItem Header="{Binding Path=Ressource.LocalizedResources.MainSubMenu1, Source={StaticResource LocalizedStrings}}" Click="MenuItem_Click"> </toolkit:ContextMenu> </toolkit:ContextMenuService.ContextMenu> </local:ItemProjet> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </Grid> </controls:PanoramaItem>
A l'exécution, le menu s'ouvre mais c'est vide et dans la fenêtre de sortie j'ai cette erreur : Une exception de première chance de type
'System.IO.FileNotFoundException' s'est produite dans mscorlib.dll
System.Windows.Data Error: BindingExpression path error: 'Ressource' property not found on 'Geometrics.LocalizedStrings' 'Geometrics.LocalizedStrings' (HashCode=66111464). BindingExpression: Path='Ressource.LocalizedResources.MainSubMenu1' DataItem='Geometrics.LocalizedStrings' (HashCode=66111464); target element is 'Microsoft.Phone.Controls.MenuItem' (Name=''); target property is 'Header' (type 'System.Object')..En essayant comme cela idem :
<toolkit:MenuItem Header="{Binding Path=LocalizedResources.MainSubMenu1, Source={StaticResource LocalizedStrings}}" Click="MenuItem_Click">
Peut-être en créant ce MenuItem en C# ? Mais si c'est comme cela quelqu'un peut me montrer comment ?
Merci,
christophe
Toutes les réponses
-
vendredi 30 mars 2012 07:36
Bonjour,
Peut-on voir la source de LocalizedResources (que j'imagine être ton wrapper) ?
Pour que la discussion puisse être identifiée comme résolue merci de marquer les réponses qui vous ont aidées à solutionner votre problème comme "réponse".
-
vendredi 30 mars 2012 07:41
Salut, voici LocalizedStrings.cs :
using System; namespace Geometrics { public class LocalizedStrings { public LocalizedStrings() { } private static Ressource.LocalizedResources locResources = new Ressource.LocalizedResources(); public Ressource.LocalizedResources LocResources { get { return locResources; } } } }
et dans App.xaml :
<Application.Resources> <local:LocalizedStrings xmlns:local="clr-namespace:Geometrics" x:Key="LocalizedStrings" /> </Application.Resources>
Mais j'ai suivi le tuto de Pierre Cauchois. Ca fonctionne partout sauf à ce contextMenu.
(PS : Suis dégoutté de ne pas t'avoir reconnu à #AKWP7 ! On a discuté ensemble mais je savais pas que c'était toi ! j'ai donc pas eu le temps de te remercier)
Christophe
-
vendredi 30 mars 2012 07:54Et tu as le même message d'erreur avec le 2ème exemple (qui me semble plus juste ;) ) ?
Pour que la discussion puisse être identifiée comme résolue merci de marquer les réponses qui vous ont aidées à solutionner votre problème comme "réponse".
-
vendredi 30 mars 2012 08:00
Oui, c'est Rudy qui l'a dit d'essayer comme ça. Mais j'ai toujours un menuItem vide et ça dans la fenêtre de sortie :
Une exception de première chance de type 'System.IO.FileNotFoundException' s'est produite dans mscorlib.dll
System.Windows.Data Error: BindingExpression path error: 'LocalizedResources' property not found on 'Geometrics.LocalizedStrings' 'Geometrics.LocalizedStrings' (HashCode=116442437). BindingExpression: Path='LocalizedResources.MainSubMenu1' DataItem='Geometrics.LocalizedStrings' (HashCode=116442437); target element is 'Microsoft.Phone.Controls.MenuItem' (Name=''); target property is 'Header' (type 'System.Object')..
-
vendredi 30 mars 2012 08:03
je viens de tester autre chose :
Où que je mettre
{Binding Path=LocalizedResources.MainSubMenu1, Source={StaticResource LocalizedStrings}}
dans ma page XAML c'est vide , donc rien à voir avec mon ContextMenu !?
-
vendredi 30 mars 2012 08:27
Salut !
A quoi fait référence "Ressource.LocalizedResources.MainSubMenu1" qui d'ailleurs comporte une faute de frappe à Resource je pense, car dans ton code C# on peut le voir écrit ainsi.
Sinon, je ne vois pas de propriété LocalizedResources dans ton code C#, mais LocResources. Ensuite il faut évidemment que ton LocResources.MainSubMenu1 ait une valeur.Blog => http://ashworks.fr | Site => http://alexismathieu.com | Twitter => http://twitter.com/ashura95
- Marqué comme réponse Toss.net vendredi 30 mars 2012 09:16
-
vendredi 30 mars 2012 08:30
C'est bizarre ça...
Et en lui faisant afficher une ressource qui fonctionne aillleurs (A la place de MainSubMenu1, copie-colle carrément le binding) ?
Pour que la discussion puisse être identifiée comme résolue merci de marquer les réponses qui vous ont aidées à solutionner votre problème comme "réponse".
-
vendredi 30 mars 2012 08:38
Oui j'avais essayé un autre champ...
et côté C# de cette même page ça traduit bien. Je fais comme ça :
_titlePivot1.Header = Ressource.LocalizedResources.MainTitle1; -
vendredi 30 mars 2012 08:41
Mes deux fichiers de localisation sont dans un dossier "Ressource"

-
vendredi 30 mars 2012 08:57
Alexis doit être sur la piste, que donne :
{Binding Path=LocResources.MainSubMenu1, Source={StaticResource LocalizedStrings}}
(j'avais pas fait attention que ta propriété était nommé "LocResources' et non pas 'LocalizedResources' (son type) :s )Pour que la discussion puisse être identifiée comme résolue merci de marquer les réponses qui vous ont aidées à solutionner votre problème comme "réponse".
- Marqué comme réponse Toss.net vendredi 30 mars 2012 09:15


