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 :

Ecoute UDP + affichage des données


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 124
    Par défaut Ecoute UDP + affichage des données
    Bonjour,

    je vous explique mon problème.

    Je développe une petite application qui écoute sur un port en UDP et qui affiche les données interceptées à l'écran.

    Mon application est constituée de deux projets visual : le module d'écoute UDP et module graphique WPF.

    J'aimerai afficher les données reçues à partir du module d'écoute, directement dans une fenêtre du module graphique.

    Auriez-vous une idée de la solution à adopter?

    Merci pour votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Ton module d'ecoute envoie de la donnée au fur et à mesure je suppose.
    Pour faire propre et utiliser le modele mvvm, il te faudrait :

    - Une vue Xaml (dans laquelle tu as un textbox par exemple, bindé sur une property de ton viewmodel)
    - Un view model qui instancie ta classe d'ecoute UDP

    Dans ton view model tu instancie ton ecoute udp et à chaque fois que tu recois des paquets, tu mets à jour ta property "DatasUDP" en prenant soin d'effectuer le lancement de l'evenement propertyChanged (voir implementation de l'interface INotifyPropertyChanged).

    Et le tour est joué

    Edit : Apres, si tu veux agrémenter le truc, tu ajoutes deux commandes à ton view model : une commande demarrer, une commande arreter, qui respectivement demarreront et arreteront ton ecoute UDP.
    Ces deux commandes seront alors bindées sur deux boutons dans ta vue xaml.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 124
    Par défaut
    Merci pour ta réponse rapide!

    C'est très interessant ce que tu me dis.

    Pourrait-tu m'expliquer ce qu'est un view model et comment je dois procéder pour le modéliser? Car ce passage n'est pas clair pour moi :

    [...] d'effectuer le lancement de l'evenement propertyChanged (voir implementation de l'interface INotifyPropertyChanged).
    Merci

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Voici un tutoriel sur le pattern MVVM :
    http://japf.developpez.com/tutoriels...-et-testables/

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 124
    Par défaut
    Ah merci. Je connaissais le pattern MVC simple, mais pas cette variante.

    Merci beaucoup.

  6. #6
    Membre averti
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 18
    Par défaut
    Bonjour,

    tu peux aussi utilizer le pathern "Composite Windows Presentation Foundation" (CWPF) qui est tres bom aussi

    http://www.codeplex.com/CompositeWPF

    a plus

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 124
    Par défaut
    Bonjour,

    après plusieurs tentatives, j'ai des difficultés à implémenter ma solution avec le Model View ViewModel.

    En fait, je n'arrive pas à lever l'évènement PropertyChanged. Dès qu'une modification se produit ça plante car on me dit que PropertyChanged vaut null...

    J'ai épluché plusieurs exemples sur le net, mais rien n'y fait...

    Pourriez vous m'éclairer là-dessus?

    Merci.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Tu codes en quoi ? C# ou VB ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 124
    Par défaut
    Je code en C#. Je galère grave à vrai dire

    J'ai essayé de faire ce que tu m'as indiqué hier. J'instancie l'écoute UDP dans le ViewModel. Dans mon module d'écoute j'ai une variable paquetCourant qui reçoit le paquet courant et lève l'évènement PropertyChanged à chaque modif. Là j'essaye de binder la property avec un textbox ...

    Je sais pas si c'est la bonne démarche

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Pas sur que ce soit comme cela.
    Imaginons ton projet comme ceci :

    Vue.xaml <- VueModele.cs <- ClasseEcoute.cs

    Classe ecoute.cs devrait lever un evenement lorsque tu reçois un nouveau paquet (avec eventuellement ton paquet en parametre, ça c'est toi qui choose)

    Dans VueModele.cs :
    Tu dois créer une property Paquet et dans son Setter (partie set), juste après ton _Paquet = value; tu places un raiseevent PropertyChanged(this, new PropertyChangedEventArgs("Paquet").
    Cela sert à indiquer à la vue que ta propriété a changé et donc que la vue doit se mettre à jour.

    Ensuite, tu créé ton instance de classeEcoute, tu te branche sur l'evenement de classeEcoute (on va le nommer NouveauPaquetArrivé pour faire simple).
    Dans la méthode qui est connectée à cet evenement, tu sette la propriété en faisant un this.Paquet = lepaquetReçuParL'evenement
    Cela permet de passer dans le setter de la propriété et de lancer l'evenement propertyChanged à la vue.

    Dans Vue.xaml, tu dois avoir un controle de texte, on va prendre pour l'exemple un label :
    <Label Content={Binding Paquet} />

    Par contre, il faut penser à ajouter ton objectDataProvider dans les resources de ta vue.
    Donc en gros :

    dans les declarations de namespace sur la balise Window : ajoute ton name space (l'autocompletion devrait t'aider)

    xmlns:c="clr-namespace:Ton.Namespace.de.ton.projet"

    puis dans les resources :

    <Window.Resources>
    <ObjectDataProvider x:Key="ObjEcouteUdp" ObjectType="{x:Type c:VueModele}" />
    </Window.Resources>

    Bon courage

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 124
    Par défaut
    Oui c'est à peu près ça que j'avais compris... mais en fait la partie qui me pose problème c'est clairement celle là :

    Ensuite, tu créé ton instance de classeEcoute, tu te branche sur l'evenement de classeEcoute (on va le nommer NouveauPaquetArrivé pour faire simple).
    Dans la méthode qui est connectée à cet evenement, tu sette la propriété en faisant un this.Paquet = lepaquetReçuParL'evenement
    Cela permet de passer dans le setter de la propriété et de lancer l'evenement propertyChanged à la vue.
    Justement je ne comprends pas comment me "brancher" sur l'évènement.

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

Discussions similaires

  1. [MySQL] Affichage des données d'une base
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 30
    Dernier message: 01/02/2006, 16h35
  2. [Tableaux] Affichage des données par lot
    Par randriarabe dans le forum Langage
    Réponses: 1
    Dernier message: 07/12/2005, 08h23
  3. pb d'affichage des données
    Par new_wave dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 03/11/2005, 17h31
  4. TDBCtrlGrid - Affichage des données
    Par audreyb dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/10/2004, 13h10
  5. [JTable] Problème d'affichage des données
    Par ddams dans le forum Composants
    Réponses: 2
    Dernier message: 15/09/2004, 17h07

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