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

Windows Presentation Foundation Discussion :

Comprendre le binding et mettre en pratique avec un tableau


Sujet :

Windows Presentation Foundation

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 56
    Points : 51
    Points
    51
    Par défaut Comprendre le binding et mettre en pratique avec un tableau
    Bonjour à tous,

    Je débute la programmation C# / WPF depuis quelques temps (j'étais avant développeur C++/Qt).

    Fortement intéressé par la programmation des IHM, je cherche à monter en compétence sur WPF mais malgré plusieurs lectures, je reste dans le flou sur un certain nombre de points.

    Si je comprends que le binding permet de lier l'affichage avec les données derrières, je n'arrive pas à comprendre comment. Dans le XAML, on indique le DataContext permettant d'indiquer la classe et ensuite on peut utiliser les propriétés. Ok sur ce point, mais lorsqu'on a plusieurs instances, comment indiquer quelle instance doit être utilisé par l'IHM ?

    En fait, je tente de réaliser un programme de test contenant un tableau. Mon tableau contient les colonnes : Nom, montant, date. Mon code (côté C# donc) contient une classe "DataManager" qui contient une liste de "DataLine", contenant les propriétés Nom, Montant et Date. Dans cette exemple, je n'arrive pas à comprendre comment lier mes données au tableau.

    Concernant l'IHM, j'ai créé un DataGrid. Mais je ne sais pas non plus si c'est le meilleur choix ...

    Est ce qu'une âme charitable pourrait me donner quelques billes pour me remettre sur les rails, svp ?

    Merci par avance,
    Okami

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour

    Le sujet etant vaste ,ton code serait le bienvenue ...Puisque tu debutes commencons par le commencement ,et personne ne fera la frappe à ta place...!!!

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    il te faut trouver un peu de lecture sur le MVVM, c'est le pattern "censé" être utilisé en wpf
    M = model = tes classes métier
    V = view = xaml + code behind du window
    VM = viewmodel = ce qu'il y a entre les 2 (exposition et populate des données ...)

    typiquement tu as une classe client avec des propriétés, une classe commande, et tu veux afficher les infos du client et les commandes de celui ci :
    tu fais une classe VM dans laquelle tu mets une propriété client et une propriété list<commandes>
    dans le code behind du window, tu instancie le VM en lui donnant ses paramètres (un peu comme en MVC pour du web) éventuellement le VM utilise des classes du modele pour populate et tu définis le datacontext du windows sur cette instance du VM qui expose des choses du M

    avec le VM tu peux donc bien avoir plusieurs instances utilisées dans le xaml (.machin.truc si nécessaire)
    et au passage le VM te permet de rajouter tout ce qui n'est pas lié au model de base (donc sans pourrir le code métier) mais qui est nécessaire à la vue pour fonctionner (comme des choses sélectionnées ou autre)

    en général je met la classe de VM sous la classe du window comme ca évite de faire trop de fichiers
    surtout que normalement le code behind du window est assez vide, on est pas censé gérer trop d'events (RelayCommand est utile), ni mettre trop de nom sur les controles (après si ca arrange on peu)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 56
    Points : 51
    Points
    51
    Par défaut
    Bonjour,

    Je vous remercie pour vos réponses.

    @MABROUKI Je ne demande à personne de faire la frappe à ma place, bien au contraire : je souhaite comprendre comment fonctionne le binding pour le mettre en pratique au travers d'un exemple. Tant qu'à mon code, il est pour le moment peu fourni et ne contient que les classes MainWindow, Data et DataManager.

    @Pol63 Je te remercie. J'ai effectivement fait un tour du côté du design pattern MVVM. J'ai également regardé différents tutos sur WPF mais je bloque toujours sur la liaison entre mes données C# et l'affichage sur l'IHM. Dans le dernier tuto que j'ai vu, une classe C# était créé mais c'était dans le XAML qu'elle était instancié, ce que je ne souhaite pas car mes classes devront évoluer...

    Bon, dans mon exemple, le VM pourrait être DataManager, non ? Si c'est le cas, je vais inclure son instance dans la classe partiel MainWindow et la déclarer datacontext de l'IHM. Et ensuite, je vais tenter de faire fonctionner le tout et on verra

    Okami

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    instancier des classes depuis le xaml n'est pas toujours judicieux en effet, surtout pour un projet évolutif avec du polymorphisme ou des factory

    il faudrait être dans ta tête pour répondre, mais je ne pense pas que ton datamanager soit le vm
    mon exemple n'était pas clair ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Un bon tuto sur le binding: http://nathanaelmarchand.developpez....t-silverlight/
    Il y aussi plein de tuto sur developpez qui traite de MVVM, sur mes applis j'utilise essentiellement MVVM Light avec Navegar pour la navigation entre les VM.

  7. #7
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2014
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 196
    Points : 331
    Points
    331
    Par défaut
    La littérature sur le sujet étant conséquente pour une première auto formation ultra basique je te conseil de prendre un exemple fonctionnel (sur dvp ou autre) avec une grille bindé à une source de donnée et de le modifier pour affiché ta grille, tes données , tes colonnes , cela te permettras de saisir les quelques concept clés.

    Ensuite te refait un projet de zéro avec ta grille , tes colonnes , tes données.

    Cette technologie est vraiment passionnante accroche toi sa vaut le coup.

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 56
    Points : 51
    Points
    51
    Par défaut
    Bonjour à tous et merci pour vos retours.

    Pour le moment, je vais laisser ça de côté et commencer par plus simple (enfin, autant que possible ) !

    Effectivement, ça a l'air puissant, mais passer de Qt à ça, c'est pas facile ^^ Pour le moment, j'ai l'impression d'avoir multiplié par 3 mon temps de création d'IHM ! Mais bon, ça viendra avec la pratique, j'en suis sûr !

Discussions similaires

  1. mettre en majuscule avec accent
    Par nicerico dans le forum Langage
    Réponses: 1
    Dernier message: 06/11/2006, 08h21
  2. [VB6]Aide pour mettre format date avec inputbox
    Par Geliwy77 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 28/01/2006, 20h13
  3. [ADO.NET][VB.NET]Comment mettre à jour BDD avec DataSet?
    Par fuhraih dans le forum Accès aux données
    Réponses: 1
    Dernier message: 17/01/2006, 16h35
  4. Chart mettre un axe avec des dates
    Par rvzip64 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 07/10/2005, 11h36
  5. mettre en page avec des div
    Par mathieu_r dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 10/08/2005, 11h35

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