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

Framework .NET Discussion :

[WPF] Question d'archi VMMV


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Mickaël
    Inscrit en
    Mai 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Mickaël
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 106
    Par défaut [WPF] Question d'archi VMMV
    Bonjour,

    Je suis en train de développer une appli sur WPF et j'essaie d'appliquer le design patter VMMV, et j'ai quelques questions d'archi à vous soumettre.

    1) Mon appli est composé d'un menu, et chaque choix affiche une view différente.
    Dans ma view principale, j'ai mis toutes les autres views et en fonction des notifications j'affiche la view demandée et je masque les autres.
    Mais lors le nombre de view augmentant, cela devient fastidieux à gérer. Il y a d'autres moyens ou techniques pour gérer ce cas ?

    2) J'affiche une liste d'albums sous plusieurs formes (liste, vignette, etc...).
    J'ai donc crée 3 views différentes pour chacune de ces formes.
    Mais est-ce qu'il faut créer une viewmodel par view ou une viewmodel sur laquelle les 3 views seront liées ?
    (Dans ce dernier cas, cela veut dire que lorsque la viewmodel envoie une notification, toutes les vues vont s'actualiser, alors qu'au final une seule n'est visible à la fois.
    La encore, quelle technique est conseillée ?

    Merci,
    Mickaël

  2. #2
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonjour.

    Difficile de répondre à la première question sans voir comment tu as organisé tout ça. Mais si ton problème est que tu te retrouves à devoir masquer une à une les vues, oui, tu peux sans doute faire mieux et sans notre aide, par exemple en les enregistrant toutes dans une liste.

    Quant à la seconde question il est essentiel de ne pas être dogmatique avec MVVM et de choisir ce qui te fera écrire le moins de code possible (grosso modo). C'est un bon motif de conception mais l'appliquer à la lettre conduit à des horreurs sans nom. Dans ton cas tu as sans doute intérêt à utiliser les mêmes types pour le VM des trois vues mais, s'il y a un *réel* problème de performances (constaté ou anticipé avec certitude), à déconnecter les deux autres vues pendant que la première est manipulée.

  3. #3
    Membre confirmé
    Homme Profil pro
    Mickaël
    Inscrit en
    Mai 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Mickaël
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 106
    Par défaut
    Merci pour tes réponses.

    1) l'idée de la liste est bien, je l'ai mise en pratique. Sur winform, j'ai l'habitude d'utiliser un tabControl qui me permet de ne pas superposer mes userControls. Et lors de l'exécution je masque les onglets.

    En cherchant d'autres solutions ( je débute sur WPF), j'ai découvert le contrôle Frame qui permet également de gérer ceci de manière élégante. Il faut que je creuse aussi cette solution.

    2) Oui effectivement il y a un gros problème de performance, car mes X view model vont recevoir un message d'actualisation, et vont toutes faire un accès au Webservice, alors qu'au final seule une VM est concernée.
    J'ai ajouté un token qui est passé lors de la création du view model, et ce token me sert à savoir si la VM est concerné par le message ou non.

    Comme je débute, je n'utilise pas de framework, j'essaie de tout gérer moi même (en regardant comment fonctionne les frameworks style prism )

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    1) Une technique que j'utilise souvent est d'avoir, dans le ViewModel principal, une propriété Current à laquelle j'affecte le ViewModel de la vue actuelle. Dans la vue, je mets un ContentControl bindé sur cette propriété Current. Et je définis des DataTemplates implicites (pas de x:Key, juste un DataType) pour lier chaque ViewModel à sa vue ; de cette façon, le ContentControl affiche automatiquement la vue qui correspond au ViewModel actuel.

    Par exemple, si tu as un ViewModel appelé TotoViewModel, et une vue correspondante qui s'appelle TotoView, tu peux déclarer ton DataTemplate comme ça (dans les ressources de l'application) :

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <DataTemplate DataType="{x:Type vm:TotoViewModel}">
        <view:TotoView />
    </DataTemplate>

    2) A priori c'est juste différentes façons d'afficher les mêmes informations, donc a priori je pencherais plutôt pour un seul ViewModel. Pour sélectionner la vue qui va bien, utilise un ItemTemplateSelector et/ou un ItemContainerStyleSelector

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WPF] Question de Layout avec binding.
    Par zeavan dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 14/02/2009, 14h41
  2. [WPF] Question sur les Decorator
    Par tomlev dans le forum Framework .NET
    Réponses: 3
    Dernier message: 08/02/2008, 08h49
  3. [WPF] Encore les images - question de performances
    Par BruceWayne dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 13/06/2007, 13h23
  4. Question d'archi-débutant :VB6 vers VB.NET premier problème
    Par zedude33 dans le forum Windows Forms
    Réponses: 9
    Dernier message: 06/02/2007, 15h29
  5. Wpf - petites questions
    Par DonJR dans le forum Windows Presentation Foundation
    Réponses: 12
    Dernier message: 05/11/2006, 11h33

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