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

C# Discussion :

A la découverte de .NET et MVVM


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut A la découverte de .NET et MVVM
    Bonjour à tous,
    Je suis initialement développeur Java mais je suis confronté depuis quelques mois à C# dans mon nouveau travail. Me voici donc à la découverte de nombreux projets intéressants tels que WPF et Linq.
    J'ai trouvé de nombreux tutos sur internet m'expliquant la syntaxe C#, le fonctionnement des frameworks etc, mais je n'ai rien trouvé de réellement claire sur les bonnes habitudes de développement et la manière d'organiser son code. En habitué du pattern MVC, j'ai trouvé ce qui me semble être l'équivalent avec MVVM, mais j'ai encore un peu du mal...
    Je serais donc reconnaissant si quelqu'un qui a l'habitude de développer avec ce pattern me donnait des conseils généraux sur la manière de s'y prendre, ou m'indiquait un tutoriel sur la conception, plus que sur la syntaxe (en français, si possible...)

  2. #2
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 250
    Par défaut
    Bonjour,
    voici un petit tuto qui devrait t'éclairer.

    http://japf.developpez.com/tutoriels...-et-testables/

  3. #3
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    Bonjour,
    Merci effectivement j'avais déjà lu ce tuto à la va vite il y a longtemps et je l'avais complètement oublié depuis.

  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
    Celui-ci n'est pas en français, mais si tu comprends à peu près l'anglais ça vaut la peine de le lire, c'est un peu l'article qui a "lancé" MVVM

    http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

  5. #5
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    Je vous remercie pour ces deux liens intéressants.
    J'ai cependant des questions plus précises sur la manière dont les classes communiquent entre elles.
    Admettons que je veuille travailler sur des objets voitures, à afficher dans une treeview. Dans mon application, j'ai donc mon Model avec mes objets, un dictionary de voitures. Dans ViewModel, j'ai mon contrôleur qui a une ObservableCollection d'objets voiture correspondant à celle présent dans le modèle, mais selon un autre type d'objet, qui ne contient que l'id de la voiture et implémentant INotifyPropertyChanged, afin que la treeview se mette à jour simplement par DataBinding dans ma View.

    C'est actuellement ce que j'ai codé, mais tout est brouillon dans ma tête. Au début, ne voulant pas faire de redondance, j'avais fait implémenter INotifyPropertyChanged à ma classe voiture, et j'avais créer un ObservableDictionnary, mais je n'arrivais pas par DataBinding à mettre à jour la treeview comme il faut. Maintenant, j'ai deux objet voiture différent, un contenant réellement toutes les données avec les attributs, et l'autre ne contenant que l'id mais pouvant être afficher, et je vais ainsi récupérer le vrai objet avec l'id quand l'utilisateur selectionne celui afficher. Mais en plus de la redondance, j'ai aussi des risques qu'une des collections ne soit pas exactement similaire à l'autre, et je ne connais rien qui existe pour qu'elles soit identique automatiquement...

  6. #6
    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
    Voilà ce que je fais d'habitude : pour chaque classe du modèle qui devra être représentée ou manipulée dans l'interface, je crée un ViewModel correspondant avec juste les propriétés nécessaires. Le ViewModel garde une référence vers le modèle dans un champ privé. Si une des propriétés du modèle pointe vers une autre classe du modèle, je reproduis cette relation entre les ViewModel

    Par exemple, avec une classe Voiture qui a une propriété de type Moteur :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Voiture
    {
        public Moteur Moteur { get; set; }
    }

    Je vais créer 2 ViewModels comme ceci (en gros...) :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public class VoitureViewModel : ViewModelBase
    {
        private readonly Voiture _model;
        public VoitureViewModel(Voiture model)
        {
            _model = model;
            _moteur = new MoteurViewModel(_model.Moteur);
        }
     
        private MoteurViewModel _moteur;
        public MoteurViewModel Moteur
        {
            get { return _moteur; }
            set
            {
                _moteur = value;
                OnPropertyChanged("Moteur");
            }
        }
     
    }
     
    public class MoteurViewModel : ViewModelBase
    {
        private readonly Moteur _model;
        public MoteurViewModel(Moteur model)
        {
            _model = model;
        }
    }

    Mais ce n'est sans doute pas la seule façon de procéder... selon le besoin il faudra sans doute adapter un peu

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

Discussions similaires

  1. Problème de compilation de l'exemple MVVM de la découverte à la maîtrise
    Par lerieure dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 24/01/2013, 11h48
  2. [C# - .Net] MVVM : ListBox->ObservableCollection->List ?!
    Par MedyAndFriends dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 27/03/2012, 08h46
  3. ADO.NET - Silverlight 4 - MVVM
    Par Alkaza dans le forum Silverlight
    Réponses: 6
    Dernier message: 19/05/2011, 13h04
  4. Projet php à la base, mais découverte de .NET
    Par ophalia dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 05/05/2007, 09h53

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