IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

PRISM:Comment une view d'une region peut ordonner le chargement d'une autre vue dans une autre region ?


Sujet :

Silverlight

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 14
    Points : 13
    Points
    13
    Par défaut PRISM:Comment une view d'une region peut ordonner le chargement d'une autre vue dans une autre region ?
    Je récupère l'evennement (dans un viewModel) d'une vue appartenant à une LeftRegion et je souhaite afficher
    une vue ModuleBView dans une Right Region ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IRegion RightRegion = this.regionManager.Regions["RightRegion"];
                    UserControl view = _container.Resolve<ModuleBView>();
                    RightRegion.Add(view);
                    RightRegion.Activate(view);
    Ce code ne peut fonctionner à condition que :
    1. le ModuleAviewModel possède une référence vers le regionManager ? comment ?
    2. La reférence du regionManager pourrait être donnée par le ModuleAview qui a cette référence par son construceur (resolu par Unity) ? soit...
    3. Le ModuleAviewModel doit alors avoir une référence vers le ModuleBView => Ceci n'est pas bon car on créé une référence en dur entre les vues, ce que l'on veut éviter bien évidemment

    donc Comment une view(viewModel) d'une region peut ordonner le chargement d'une autre vue dans une autre region ?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    En déclanchant un évènement ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Oui mais l'évènement sera intercepté par...le viewModel d'une vue déja chargée et activée dans une Région. Dans ce cas on ne fait pas de chargement dynamique à la demande.
    Imaginons qu'en fonction du click sur un des 3 boutons de la vue de Gauche dans la LeftRegion je dois afficher une viewBtn1 ou viewBtn2 ou viewBtn3 dans la RightRegion. Cela voudrait dire que les 3 vues devrait être préchargée dans la RightRegion pour que l'une d'entre elle réponde à l'évènement...

    Voir la partie viewInjection de ce post, l'auteur se pose la même question.

    http://www.developmentalmadness.com/...ction-and.aspx

    Microsoft dans leur exemple passe par une classe Controller pour contourner ce pb et ne pas crée de dépendance entre la vue appelante et appelée

    tu en penses quoi ?

    Merci en avance pour ces conseils

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Citation Envoyé par tykool Voir le message
    Je récupère l'evennement (dans un viewModel) d'une vue appartenant à une LeftRegion et je souhaite afficher
    une vue ModuleBView dans une Right Region ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IRegion RightRegion = this.regionManager.Regions["RightRegion"];
                    UserControl view = _container.Resolve<ModuleBView>();
                    RightRegion.Add(view);
                    RightRegion.Activate(view);
    Ce code ne peut fonctionner à condition que :
    1. le ModuleAviewModel possède une référence vers le regionManager ? comment ?
    2. La reférence du regionManager pourrait être donnée par le ModuleAview qui a cette référence par son construceur (resolu par Unity) ? soit...
    3. Le ModuleAviewModel doit alors avoir une référence vers le ModuleBView => Ceci n'est pas bon car on créé une référence en dur entre les vues, ce que l'on veut éviter bien évidemment

    donc Comment une view(viewModel) d'une region peut ordonner le chargement d'une autre vue dans une autre region ?

    Merci d'avance
    Tu peux publier un evenement via l'event aggregator. ModuleBViewModel l'intercepte et demande a son RegionManager d'activer sa vue.

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par PitMaverick78 Voir le message
    Tu peux publier un evenement via l'event aggregator. ModuleBViewModel l'intercepte et demande a son RegionManager d'activer sa vue.
    C'est ce que je disais en parlant d'évènement

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Tu peux publier un evenement via l'event aggregator. ModuleBViewModel l'intercepte et demande a son RegionManager d'activer sa vue.

    Oui. Mais ceci signifie donc que :
    - le ModuleBViewModel est instancié et par conséquent que sa vue l'est aussi. Autrement dit il faut que toutes les vues suceptibles
    d'être concernées par un évènement soit déja préchargées.

    Imaginons que dans un menu de gauche (dans Left Region) on est 10 boutons qui déclenchent dans la RightRegion une vue spécifique pour
    chacun de ces 10 boutons, il faudrait instancier ces 10 vues pour que celle concernée soit présente pour recevoir l'evenement
    et du coup registre sa vue...

    Y'a pas un pb de conception la ?

    On doit utiliser un RegionAdapter ou qq chose dans ce gout la ?
    des exemples ?

    Merci

  7. #7
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Dans ce cas la, il doit plutot y'avoir un controller et c'est ce controller qui se charge de l'instanciation (ce controller est un espece de master viewmodel)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Merci ! , je m'oriente effectivement plutôt sur cette version de controller.

    - As-tu un exemple a me proposer ? (ou un lien , un article )
    - Pourquoi d'après toi ne trouve-t on pas de sujet la dessus. Le chargement "On demand" est pourtant bien un des buts de la programmation Modulaire,non ?

    Merci d'avance

  9. #9
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Citation Envoyé par tykool Voir le message
    Merci ! , je m'oriente effectivement plutôt sur cette version de controller.

    - As-tu un exemple a me proposer ? (ou un lien , un article )
    - Pourquoi d'après toi ne trouve-t on pas de sujet la dessus. Le chargement "On demand" est pourtant bien un des buts de la programmation Modulaire,non ?

    Merci d'avance
    -Dans StockTrade de PRISM (l'implémentation référence) il me semble qu'il y'a des "controllers"
    -La comme ca, j'ai un peu de mal à y réflechir mais je pense qu'il doit y'avoir une autre solution (type coupler avec la navigation de region ou du toolkit)

Discussions similaires

  1. [Débutant] Comment ajouter une colonne à une table dans une view
    Par jérémyp8 dans le forum ASP.NET MVC
    Réponses: 0
    Dernier message: 08/02/2015, 21h08
  2. comment insert , update dans une View
    Par Kagami dans le forum Développement
    Réponses: 5
    Dernier message: 20/09/2013, 13h50
  3. Comment avoir un fichier texte dans une view?
    Par stibbons dans le forum Eclipse
    Réponses: 0
    Dernier message: 10/09/2009, 16h18
  4. appel d'une autre vue dans une vue d'un modèle different
    Par Fiyorden dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 09/07/2008, 16h22
  5. Réponses: 2
    Dernier message: 10/06/2002, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo