none
Récupérer donnée d'une page RRS feed

  • Question

  • Bonjour,

    Je cherche à récupérer un ID par exemple d'un ListboxItem d'une page ; PivotProjet.xaml appelle une page PivotFigures.xaml (qui contient une listbox). Au clic sur l'item, faudrait que la page se ferme et que PivotProjet.xaml récupère l'ID.

    Passer un paramètre à une page, je sais maintenant le faire

    string destination = "/PivotFigures.xaml"; 
    destination += String.Format("?type={0}""1");
    this.NavigationService.Navigate(new Uri(destination, UriKind.Relative));

    mais récupérer ça me paraît plus complexe. J'ai cru comprendre qu'il fallait passer par une sorte de variable dans l'App.xaml.cs ?

    Christophe



    mercredi 15 février 2012 16:15

Réponses

  • Un peu plus propre que le state tout en gardant ton code :

    Donc du coté Page1 :

    string destination = "/PivotFigures.xaml"; 
    destination += String.Format("?type={0}""1");
    this.NavigationService.Navigate(new Uri(destination, UriKind.Relative));

    et du coté page 2 :

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {

    var id=NavigationContext.QueryString["type"];
    TuFaisCeQueTuVeuxAvec(id);

    }

    Voilou



    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    mercredi 15 février 2012 17:37
    Modérateur

Toutes les réponses

  • Bonjour,

    Tu peux utiliser le PhoneApplicationService.Current.State[] pour conserver la valeur de l'élément cliqué d'une page à l'autre.


    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".


    mercredi 15 février 2012 16:26
  • Un peu plus propre que le state tout en gardant ton code :

    Donc du coté Page1 :

    string destination = "/PivotFigures.xaml"; 
    destination += String.Format("?type={0}""1");
    this.NavigationService.Navigate(new Uri(destination, UriKind.Relative));

    et du coté page 2 :

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {

    var id=NavigationContext.QueryString["type"];
    TuFaisCeQueTuVeuxAvec(id);

    }

    Voilou



    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    mercredi 15 février 2012 17:37
    Modérateur
  • Ah bien oui c'est tout bête !

    Mais j'ai creusé du coup pas mal sur State[] que je ne connais pas : d'une pierre deux coup

    mercredi 15 février 2012 19:54
  • Je n'ai pas proposé cela justement car cela va recharger complètement la page appellé, au contraire du store dans le State qui va te permettre de faire un GoBack() et de contrôler simplement dans le OnNavigatedTo la valeur souhaité.

    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".

    mercredi 15 février 2012 20:42
  • @BadProcESs : je pige pas trop en quoi ca va recharger la page ?

    Toss a deux pages : PivotProjet.xaml et PivotFigures.xaml, donc on a forcément une navigation, et on peut faire GoBack sans soucis, donc je vois pas :)


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    mercredi 15 février 2012 21:42
    Modérateur
  • Bonjour,

    BadProcESs n'a pas tort, ma page Projet.xaml est toujours rechargée dès que je reviens de dans. J'ai une list<> dans laquelle j'ajoute des élèments sélectionnée dans la page Figures.xaml :

    Dès que je reviens dans Projet.xaml, j'ai plus rien. La solution d'utiliser State[ ] est-elle dans ce cas idéal ? Ou alors je passe à côté d'un truc ?

    lundi 20 février 2012 14:07
  • Modifie ta list en observableCollection deja, cela va permettre de mettre à jour la liste qd tu ajouteras des données.

    Si c'est juste une propriété que tu changes, pense à appeler PropertyChanged pour que cela a une incidence


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    lundi 20 février 2012 14:58
    Modérateur
  • Je la déclare où alors cette liste dans le App.xaml ? Car lorsque je suis par exemple dans la page dimension.xaml et que je revient dans Projet.xaml en faisant ça (code suivant) ; c'est une nouvelle instance de Projets.xaml ! non ?

    private void appbar_save_Click(object sender, EventArgs e)
    {
        string destination = "/Projet.xaml";
        destination += String.Format("?type={0}&A={1}&B={2}&C={3}", IDForm, txtA.Text, txtB.Text, txtC.Text);
        this.NavigationService.Navigate(new Uri(destination, UriKind.Relative));
    }
    lundi 20 février 2012 15:15
  • il faut que tu supprimes la derniere page (elements.xaml) de la navigation 

    NavigationService.RemoveBackEntry();

    et que tu ailles en arriere

    NavigationService.GoBack();

    Je te conseille de regarder un peu plus MVVM pour que tu te fasses une meilleure idée de la gestion des données.

    (essaie de découper tes questions en thread histoire qu'une personne ayant les memes probs que toi puisse trouver ses reponses plus facilement)


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    lundi 20 février 2012 15:32
    Modérateur