Traitée Localisation via le XAML affiche un vide

  • vendredi 30 mars 2012 05:26
     
      A du code

    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




    • Modifié Toss.net vendredi 30 mars 2012 08:13 titre plus juste
    • Modifié Toss.net vendredi 30 mars 2012 08:13
    • Modifié Toss.net vendredi 30 mars 2012 08:13
    •  

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
     
      A du code

    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:54
     
     
    Et 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
     
      A du code

    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
     
     Traitée

    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
     
      A du code

    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
     
     Traitée A du code

    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
    •