locked
passer des data d'une longlistselector à une nouvelle page RRS feed

  • Question

  • Bonjour à tous,

     

    voila j'ai suivi un "tuto" et j'aimerais utiliser la structure de celui-ci pour un petit projet perso. Le problème est de passer ces données sur une autre page quand je sélectionne un items de la LongListSelector.

    autrement dit (pour le code source donné) j'aimerais en cliquant sur le nom d'une ville à partir de la LongListSelector qu'une page s'ouvre et que sur cette page puisse s'afficher le pays par exemple de la ville sélectionnée.

    Source : http://www.windowsphonegeek.com/articles/wp7-longlistselector-in-depth--part2-data-binding-scenarios

    le code source est téléchargeable en bas à cette même adresse. ici

    on doit sans doute utiliser SelectionChangedEventArgs et le NavigationService , mais meme avec l'exemple fournis avec le toolkit je n'y arrive pas.

    Si vous pouviez me donner la solution.

    Merci beaucoup par avance

     

    mercredi 23 mars 2011 15:03

Réponses

  • Sinon voila une solution peut-être plus propre et permettant de ne passer qu'un seul paramètres :

    On ajoute une propriété de type Int sur City pour pouvoir identifier une ville facilement:

    public class City
    	{
        /// <summary>
        /// On rajoute une propriété ID qui permet d'identifier 
        /// une ville de façon unique
        /// </summary>
        public int Id { get; set; }
    
    		public string Name
    		{
    			get;
    			set;
    		}
    
    		public string Country
    		{
    			get;
    			set;
    		}
    
    		public string Language
    		{
    			get;
    			set;
    		}
    	}
    

    on laisse toujours le même code dans app.xaml.cs

    this.RootFrame.UriMapper = this.Resources["MonUriMapper"] as UriMapper;
    

    On modifie App.Xaml de la façon suivante :

    <!--Application Resources-->
      <Application.Resources>
        <nav:UriMapper x:Key="MonUriMapper">
          <nav:UriMapper.UriMappings>
            <nav:UriMapping Uri="/{maPage}/{paramId}" 
                    MappedUri="/{maPage}.xaml?id={paramId}"/>
          </nav:UriMapper.UriMappings>
        </nav:UriMapper>
    
      </Application.Resources>
    

    Dans le constructeur de >MainPage on ajoute ou modifie le code suivant :

    public MainPage()
    		{
    			InitializeComponent();
    			List<City> source = new List<City>();
    			source.Add(new City() {Id=1, Name = "Madrid", Country = "ES", Language = "Spanish" });
          source.Add(new City() { Id = 2, Name = "Barcelona", Country = "ES", Language = "Spanish" });
          source.Add(new City() { Id = 3, Name = "Mallorca", Country = "ES", Language = "Spanish" });
          source.Add(new City() { Id = 4, Name = "Las Vegas", Country = "US", Language = "English" });
          source.Add(new City() { Id = 5, Name = "Dalas", Country = "US", Language = "English" });
          source.Add(new City() { Id = 6, Name = "New York", Country = "US", Language = "English" });
          source.Add(new City() { Id = 7, Name = "London", Country = "UK", Language = "English" });
          source.Add(new City() { Id = 8, Name = "Mexico", Country = "MX", Language = "Spanish" });
          source.Add(new City() { Id = 9, Name = "Milan", Country = "IT", Language = "Italian" });
          source.Add(new City() { Id = 10, Name = "Roma", Country = "IT", Language = "Italian" });
          source.Add(new City() { Id = 11, Name = "Paris", Country = "FR", Language = "French" });
          
    
    
    			var cityByCountry = from city in source
    								  group city by city.Country into c
    								  orderby c.Key
    								  select new Group<City>(c.Key, c);
    
          App.Current.Resources.Add("City", source);
    
    			this.citiesListGropus.ItemsSource = cityByCountry;
    			this.citiesListFlat.ItemsSource = new List<string> { "Madrid", "Barcelona", "Mallorca", "Las Vegas" };
    			this.citiesListFlatComposite.ItemsSource = source;
          this.citiesListFlatComposite.SelectionChanged += new SelectionChangedEventHandler(citiesListFlat_SelectionChanged);
    		
    		}
    

    Comme tu peux le voir j'ai renseigner la propriété Id pour chaque City.

    et j'ai stocker la collection de city dans les ressources de l'application comme ceci :

    App.Current.Resources.Add("City", source);

    Le selection_changed :

    void citiesListFlat_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
          City ville = citiesListFlatComposite.SelectedItem as City;
          if (ville != null)
          {
            Uri uri = new Uri("/MaPageVille/" + ville.Id , UriKind.RelativeOrAbsolute);
            NavigationService.Navigate(uri);
          }
        }
    

    et voici la page Loaded de ta nouvelle page :

    void MaPageVille_Loaded(object sender, RoutedEventArgs e)
        {
          //On récupère l'id de la ville passé en paramètre
          int idCity = 0;
          if (this.NavigationContext.QueryString.ContainsKey("id"))
            int.TryParse( NavigationContext.QueryString["id"],out idCity);
          //on récupère la collection des villes stockés dans les ressources avec la key City""
          List<City> cities = App.Current.Resources["City"] as List<City>;
    
          //On récupère la ville correspondant à l'id
          City city = cities.Where(ville => ville.Id == idCity).FirstOrDefault();
    
          this.DataContext = city;
        }
    
    Voila une autre solution :)

     

    samedi 26 mars 2011 11:43

Toutes les réponses

  • Voici un petit exemple (ce n'est peut être pas le meilleur mais cela te permet de gérer ton problème :

    Voila ce que je déclare dans App.Xaml :

    {maPage} --> correspond au nom du fichier xaml

    {param1} --> correspond au paramètre passer à la page

    <Application.Resources>
        <nav:UriMapper x:Key="MonUriMapper">
          <nav:UriMapper.UriMappings>
            <nav:UriMapping Uri="/{maPage}/{param1}" MappedUri="/{maPage}.xaml?id={param1}"/>
          </nav:UriMapper.UriMappings>
        </nav:UriMapper>
    
      </Application.Resources>
    

    Voila ce que déclare dans le constructeur de App.xaml.cs :

    this.RootFrame.UriMapper = this.Resources["MonUriMapper"] as UriMapper;
    

    Ceci nous a permis une table de navigation.

    Maintenant il te faut implémenter ton evènement sur le selctionChanged :

    void citiesListFlat_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
          City ville = citiesListFlatComposite.SelectedItem as City;
          if (ville != null)
          {
            Uri uri = new Uri("/MaPageVille/id="+ville.Name, UriKind.RelativeOrAbsolute);
            NavigationService.Navigate(uri);
          }
        }
    

    Et ensuite dans ta nouvelle page il faut que tu récupères la paramètre :

     

    void MaPageVille_Loaded(object sender, RoutedEventArgs e)
        {
          String ville = null;
          if (this.NavigationContext.QueryString.ContainsKey("id"))
            ville = NavigationContext.QueryString["id"];
    
    
        }
    
    Voila j'espère que cela t'aidera, si t uas besoin d'explication n'hésites pas.
    mercredi 23 mars 2011 20:31
  • Bonjour,

    Merci beaucoup pour la réponse je vais essayer de mettre ça en pratique et je te tiendrais au courant si ça marche ou pas.

     

    ps : désolé d'avoir mis si longtemps à répondre mais il semblerai que la notification des réponses par mail ne fonctionne pas.

     

    vendredi 25 mars 2011 09:10
  • bonjour,

     

    je n'arrive toujours pas à faire transiter (ou afficher) les données sur la nouvelle page.

    en sélectionnant un élément de ma liste la nouvelle page s'ouvre bien et ce sans erreur.

    si j'ai bien compris ville doit représenter l’élément sélectionné de la liste avec le paramètre ici Name et donc représente le nom de la ville, que l'on envoie sur une nouvelle page a l'aide de mot clef ici "id"

    donc j'ai mis dans :

     

    App.xaml.cs

     

     

    ....	
    // Phone-specific initialization
    			InitializePhoneApplication();
    
       this.RootFrame.UriMapper = this.Resources["MonUriMapper"] as UriMapper;
    		}
    

     

     

    App.xaml

     

     

    ....
    xmlns:nav="clr-namespace:System.Windows.Navigation;assembly=Microsoft.Phone" >
    
     <!--Application Resources-->
     <Application.Resources>
      <nav:UriMapper x:Key="MonUriMapper">
       <nav:UriMapper.UriMappings>
        <nav:UriMapping Uri="/{maPage}/{param1}" MappedUri="/{maPage}.xaml?id={param1}"/>
       </nav:UriMapper.UriMappings>
      </nav:UriMapper>
    
     </Application.Resources>
    
    

     

     

    MainPage.xaml.cs

     

     

    ....
     void citiesListFlat_SelectionChanged(object sender, SelectionChangedEventArgs e)
      {
       City ville = citiesListGropus.SelectedItem as City;
       if (ville != null)
       {
        Uri uri = new Uri("/Page1/id=" + ville.Name, UriKind.RelativeOrAbsolute);
        NavigationService.Navigate(uri);
       }
      }
    

     

     

    MainPage.xaml

     

     

    ....
    <toolkit:LongListSelector x:Name="citiesListGropus" Background="Transparent" 
         ItemTemplate="{StaticResource citiesItemTemplate}"
         ListHeaderTemplate="{StaticResource citiesListHeader}" 
    						ListFooterTemplate="{StaticResource citiesListFooter}"
    					GroupHeaderTemplate="{StaticResource groupHeaderTemplate}"
         GroupItemTemplate="{StaticResource groupItemTemplate}"
     <!-- ce que j'ai rajouté --> SelectionChanged="citiesListFlat_SelectionChanged">
    						<toolkit:LongListSelector.GroupItemsPanel>
    							<ItemsPanelTemplate>
    								<toolkit:WrapPanel/>
    							</ItemsPanelTemplate>
    						</toolkit:LongListSelector.GroupItemsPanel>
    					</toolkit:LongListSelector>
    

     

     

    Page1.xaml.cs (ma nouvelle page)

     

     

     public partial class Page1 : PhoneApplicationPage
     {
      public Page1()
      {
       InitializeComponent();
         }
    
      void Page1_Loaded(object sender, RoutedEventArgs e)
     {
      String ville = null;
      if (this.NavigationContext.QueryString.ContainsKey("id"))
      ville = NavigationContext.QueryString["id"];
     } }
    

     

     

    Page1.xaml

     

     

     <!--ContentPanel - placez tout contenu supplémentaire ici-->
      <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
       <StackPanel HorizontalAlignment="Center" >
        <TextBlock Text="{Binding ville}" > </TextBlock>
    <!--aussi essaye avec : --> <TextBlock x:Name="ville" ></TextBlock>
        </StackPanel>
      </Grid>
     
     </Grid>
    

     

     

    voila, j'en suis là pour l'instant, dois-je définir quelque chose de plus dans page1.xaml.cs ? 

    ou je m'y prends mal dans Page1.xaml pour afficher "ville" ?

     

    encore merci pour ton aide.


    • Modifié Ghisura samedi 26 mars 2011 09:30 oublis du 1 dans Page1.xaml
    samedi 26 mars 2011 09:28
  • Ok je vois le problème mais entre les pages on ne peut pas passer autre chose que du string (du texte).

    Souvent on va passer ?id=5. Ce qui correspond à un identifiant en base de donnée via un webservice.

    Mais pour ton cas je viens de faire ceci , je ne sais pas si cela correspond à tes attentes :

    Dans App.Xaml

    <Application.Resources>
        <nav:UriMapper x:Key="MonUriMapper">
          <nav:UriMapper.UriMappings>
            <nav:UriMapping Uri="/{maPage}/{paramName}/{paramCountry}/{paramLanguage}" 
                    MappedUri="/{maPage}.xaml?name={paramName}&amp;country={paramCountry}&amp;language={paramLanguage}"/>
          </nav:UriMapper.UriMappings>
        </nav:UriMapper>
    
      </Application.Resources>
    

    Comme tu peux le voir maintenant je passe trois paramètres pour pouvoir récupérer toutes les valeurs de l'objet city

    Dans App.Xaml.Cs, on laisse toujours le code suivant :

    this.RootFrame.UriMapper = this.Resources["MonUriMapper"] as UriMapper;
    

    Dans le selection_changed du main Page on modifie le code de la façon a retourner les 3 paramètres :

    void citiesListFlat_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
          City ville = citiesListFlatComposite.SelectedItem as City;
          if (ville != null)
          {
            Uri uri = new Uri("/MaPageVille/" + ville.Name + "/" + ville.Country + "/" + ville.Language, UriKind.RelativeOrAbsolute);
            NavigationService.Navigate(uri);
          }
        }
    

    Dans le Load de ta nouvelle page tu ajoute le code suivant :

    void MaPageVille_Loaded(object sender, RoutedEventArgs e)
        {
          City city = new City();
          if (this.NavigationContext.QueryString.ContainsKey("name"))
            city.Name = NavigationContext.QueryString["name"];
          if (this.NavigationContext.QueryString.ContainsKey("country"))
            city.Country = NavigationContext.QueryString["country"];
          if (this.NavigationContext.QueryString.ContainsKey("language"))
            city.Language = NavigationContext.QueryString["language"];
    
          this.DataContext = city;
        }
    

    Comme tu peux le constater tu recrée l'objet city.

    Et dans le xaml de ta page tu peux rajouter du code pour afficher un résultat que tu formatera comme tu veux :

    <!--ContentPanel - place additional content here-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
          <StackPanel>
          <TextBlock Text="{Binding Path=Name}" Style="{StaticResource PhoneTextNormalStyle}"/>
          <TextBlock Text="{Binding Path=Country}" Style="{StaticResource PhoneTextNormalStyle}"/>
          <TextBlock Text="{Binding Path=Language}" Style="{StaticResource PhoneTextNormalStyle}"/>
          </StackPanel>
        </Grid>
    
    Voila j'espère que cela peut t'aider, il y a surement d'autres solution, mais moi aussi je découvre Windows Phone 7 au fur et a mesure.

     

     

    samedi 26 mars 2011 11:12
  • Sinon voila une solution peut-être plus propre et permettant de ne passer qu'un seul paramètres :

    On ajoute une propriété de type Int sur City pour pouvoir identifier une ville facilement:

    public class City
    	{
        /// <summary>
        /// On rajoute une propriété ID qui permet d'identifier 
        /// une ville de façon unique
        /// </summary>
        public int Id { get; set; }
    
    		public string Name
    		{
    			get;
    			set;
    		}
    
    		public string Country
    		{
    			get;
    			set;
    		}
    
    		public string Language
    		{
    			get;
    			set;
    		}
    	}
    

    on laisse toujours le même code dans app.xaml.cs

    this.RootFrame.UriMapper = this.Resources["MonUriMapper"] as UriMapper;
    

    On modifie App.Xaml de la façon suivante :

    <!--Application Resources-->
      <Application.Resources>
        <nav:UriMapper x:Key="MonUriMapper">
          <nav:UriMapper.UriMappings>
            <nav:UriMapping Uri="/{maPage}/{paramId}" 
                    MappedUri="/{maPage}.xaml?id={paramId}"/>
          </nav:UriMapper.UriMappings>
        </nav:UriMapper>
    
      </Application.Resources>
    

    Dans le constructeur de >MainPage on ajoute ou modifie le code suivant :

    public MainPage()
    		{
    			InitializeComponent();
    			List<City> source = new List<City>();
    			source.Add(new City() {Id=1, Name = "Madrid", Country = "ES", Language = "Spanish" });
          source.Add(new City() { Id = 2, Name = "Barcelona", Country = "ES", Language = "Spanish" });
          source.Add(new City() { Id = 3, Name = "Mallorca", Country = "ES", Language = "Spanish" });
          source.Add(new City() { Id = 4, Name = "Las Vegas", Country = "US", Language = "English" });
          source.Add(new City() { Id = 5, Name = "Dalas", Country = "US", Language = "English" });
          source.Add(new City() { Id = 6, Name = "New York", Country = "US", Language = "English" });
          source.Add(new City() { Id = 7, Name = "London", Country = "UK", Language = "English" });
          source.Add(new City() { Id = 8, Name = "Mexico", Country = "MX", Language = "Spanish" });
          source.Add(new City() { Id = 9, Name = "Milan", Country = "IT", Language = "Italian" });
          source.Add(new City() { Id = 10, Name = "Roma", Country = "IT", Language = "Italian" });
          source.Add(new City() { Id = 11, Name = "Paris", Country = "FR", Language = "French" });
          
    
    
    			var cityByCountry = from city in source
    								  group city by city.Country into c
    								  orderby c.Key
    								  select new Group<City>(c.Key, c);
    
          App.Current.Resources.Add("City", source);
    
    			this.citiesListGropus.ItemsSource = cityByCountry;
    			this.citiesListFlat.ItemsSource = new List<string> { "Madrid", "Barcelona", "Mallorca", "Las Vegas" };
    			this.citiesListFlatComposite.ItemsSource = source;
          this.citiesListFlatComposite.SelectionChanged += new SelectionChangedEventHandler(citiesListFlat_SelectionChanged);
    		
    		}
    

    Comme tu peux le voir j'ai renseigner la propriété Id pour chaque City.

    et j'ai stocker la collection de city dans les ressources de l'application comme ceci :

    App.Current.Resources.Add("City", source);

    Le selection_changed :

    void citiesListFlat_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
          City ville = citiesListFlatComposite.SelectedItem as City;
          if (ville != null)
          {
            Uri uri = new Uri("/MaPageVille/" + ville.Id , UriKind.RelativeOrAbsolute);
            NavigationService.Navigate(uri);
          }
        }
    

    et voici la page Loaded de ta nouvelle page :

    void MaPageVille_Loaded(object sender, RoutedEventArgs e)
        {
          //On récupère l'id de la ville passé en paramètre
          int idCity = 0;
          if (this.NavigationContext.QueryString.ContainsKey("id"))
            int.TryParse( NavigationContext.QueryString["id"],out idCity);
          //on récupère la collection des villes stockés dans les ressources avec la key City""
          List<City> cities = App.Current.Resources["City"] as List<City>;
    
          //On récupère la ville correspondant à l'id
          City city = cities.Where(ville => ville.Id == idCity).FirstOrDefault();
    
          this.DataContext = city;
        }
    
    Voila une autre solution :)

     

    samedi 26 mars 2011 11:43
  • bon ben je ne comprend pas ça ne passe pas, aucun message d'erreur pourtant.

    dommage car la première solution (celle avec tout les paramètres) correspond exactement à ce que je voudrais faire.

    tu as tenté chez toi avec le code source ? et  ça marche ? 

     

    en tout cas encore merci.

    samedi 26 mars 2011 15:05
  • Chez moi sa fonctionne sans problème.

    Je vais essayer de mettre un lien sur la solution zipper.


    Pascal.
    samedi 26 mars 2011 15:33
  • volontiers si ça ne te dérange pas.

    je pourrais voir en même temps ou je me suis trompé.

    merci.

    samedi 26 mars 2011 15:39
  • Voici le lien vers la solution zippé

    http://lb-webpi-1097v.maplateformeweb.com/LongListSelectorModif.zip

    Par contre je retire le fichier dès que tu l'as récupéré.

    Pascal.


    Pascal.
    samedi 26 mars 2011 15:41
  • je l'ai reccuperé.

    je vais essayé de voir ça.

    merci beaucoup.

    samedi 26 mars 2011 15:53
  • Merci ! 

    bon ça marche avec ton fichier le probleme venait de la façon dont je spécifiait le "SelectionChanged" .

    donc j'arrive bien à afficher les infos sur la nouvelle page sauf une (sinon ça serait trop simple ^^' )

    il s'agit d'une source d'image :

    dans ma liste j'ai quelque chose comme ... , Affiche = "http://XXXXX/XXXXX/XXXX_00225.jpg", ....

    j'arrive à afficher l'image dans la mainpage.xaml  avec:

     <Image Source="{Binding Affiche}" Height="80" Stretch="UniformToFill" />
    

    par contre dans MaPageVille.xaml avec 

     <Image Source="{Binding Path=Affiche}" Height="300" />
    

    ça ne fonctionne pas vu que l'on passe l'info en string il faut changer le type ? definir qu'il s'agit d'une image ?

    j'ai essayé avec ça dans MaPageVille.xaml.cs

       
          if (this.NavigationContext.QueryString.ContainsKey("affiche"))
            city.Affiche = NavigationContext.QueryString["affiche"];
    
          ImageSource affiche = new BitmapImage(new Uri(city.Affiche, System.UriKind.RelativeOrAbsolute));
    

    mais je dois être complètement à coté de la plaque.

    en tout cas c'est vraiment sympa de m'avoir donné la solution, merci.

     

    samedi 26 mars 2011 18:41
  • De rien, faut bien débuter un jour et c'est comme ça qu'on apprend.

    Voila ce qu'il faut ajouter pour que cela fonctionne dans l'objet City :

    public string CheminImage
        {
          get;
          set;
        }
    

    Il faut modifier le code suivant dans App.Xaml car on à un nouveau paramètre :

    <Application.Resources>
          <nav:UriMapper x:Key="MonUriMapper">
            <nav:UriMapper.UriMappings>
              <nav:UriMapping Uri="/{maPage}/{paramName}/{paramCountry}/{paramLanguage}/{paramCheminImage}" 
            MappedUri="/{maPage}.xaml?name={paramName}&amp;country={paramCountry}&amp;language={paramLanguage}&amp;cheminImage={paramCheminImage}"/>
            </nav:UriMapper.UriMappings>
          </nav:UriMapper>
    
      </Application.Resources>
    

    Dans le constructeur MainPage.Xaml.cs il faut modifier la collection de City (j'ai mis la même image à chaque fois pour me simplifier la vie) :

    List<City> source = new List<City>();
          source.Add(new City() { Name = "Madrid", Country = "ES", Language = "Spanish", CheminImage = "http://i.microsoft.com/global/windowsphone/fr-fr/PublishingImages/windowsphone_logo.png" });
          source.Add(new City() { Name = "Barcelona", Country = "ES", Language = "Spanish", CheminImage = "http://i.microsoft.com/global/windowsphone/fr-fr/PublishingImages/windowsphone_logo.png" });
          source.Add(new City() { Name = "Mallorca", Country = "ES", Language = "Spanish", CheminImage = "http://i.microsoft.com/global/windowsphone/fr-fr/PublishingImages/windowsphone_logo.png" });
          source.Add(new City() { Name = "Las Vegas", Country = "US", Language = "English", CheminImage = "http://i.microsoft.com/global/windowsphone/fr-fr/PublishingImages/windowsphone_logo.png" });
          source.Add(new City() { Name = "Dalas", Country = "US", Language = "English", CheminImage = "http://i.microsoft.com/global/windowsphone/fr-fr/PublishingImages/windowsphone_logo.png" });
          source.Add(new City() { Name = "New York", Country = "US", Language = "English", CheminImage = "http://i.microsoft.com/global/windowsphone/fr-fr/PublishingImages/windowsphone_logo.png" });
          source.Add(new City() { Name = "London", Country = "UK", Language = "English", CheminImage = "http://i.microsoft.com/global/windowsphone/fr-fr/PublishingImages/windowsphone_logo.png" });
          source.Add(new City() { Name = "Mexico", Country = "MX", Language = "Spanish", CheminImage = "http://i.microsoft.com/global/windowsphone/fr-fr/PublishingImages/windowsphone_logo.png" });
          source.Add(new City() { Name = "Milan", Country = "IT", Language = "Italian", CheminImage = "http://i.microsoft.com/global/windowsphone/fr-fr/PublishingImages/windowsphone_logo.png" });
          source.Add(new City() { Name = "Roma", Country = "IT", Language = "Italian", CheminImage = "http://i.microsoft.com/global/windowsphone/fr-fr/PublishingImages/windowsphone_logo.png" });
          source.Add(new City() { Name = "Paris", Country = "FR", Language = "French", CheminImage = "http://i.microsoft.com/global/windowsphone/fr-fr/PublishingImages/windowsphone_logo.png" });
          
    

    Voila ce qu'il faut modifier dans le selction_changed :

    void citiesListFlat_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
          City ville = citiesListFlatComposite.SelectedItem as City;
          if (ville != null)
          {
            Uri uri = new Uri("/MaPageVille/" + ville.Name + "/" + ville.Country + "/" + ville.Language + "/" + ville.CheminImage, UriKind.RelativeOrAbsolute);
            NavigationService.Navigate(uri);
          }
        }
    

    Il faut modifier le Load de ta nouvelle page :

    void MaPageVille_Loaded(object sender, RoutedEventArgs e)
        {
          City city = new City();
          if (this.NavigationContext.QueryString.ContainsKey("name"))
            city.Name = NavigationContext.QueryString["name"];
          if (this.NavigationContext.QueryString.ContainsKey("country"))
            city.Country = NavigationContext.QueryString["country"];
          if (this.NavigationContext.QueryString.ContainsKey("language"))
            city.Language = NavigationContext.QueryString["language"];
          if (this.NavigationContext.QueryString.ContainsKey("cheminImage"))
            city.CheminImage = NavigationContext.QueryString["cheminImage"];
    
          this.DataContext = city;
        }
    

    Et au niveau du Xaml de cette page il faut mettre :

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
          <StackPanel>
          <TextBlock Text="{Binding Path=Name}" Style="{StaticResource PhoneTextNormalStyle}"/>
          <TextBlock Text="{Binding Path=Country}" Style="{StaticResource PhoneTextNormalStyle}"/>
          <TextBlock Text="{Binding Path=Language}" Style="{StaticResource PhoneTextNormalStyle}"/>
            <Image Source="{Binding Path=CheminImage}"
                Stretch="UniformToFill"/>
          </StackPanel>
        </Grid>
    

     

    Sinon tu peux récupérer la solution que j'ai mise à jour : 

    Ici
    Pascal.
    samedi 26 mars 2011 19:10
  • j'ai recuperé le fichier si tu veux le deleter.

    je vais voir cela en detail et essayé d'apprendre avec ce que tu m'a donné et montré.

     

    Un grand merci à toi.

    bonne soirée.

    samedi 26 mars 2011 19:34