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 :

[MVVM] Event en Command


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut [MVVM] Event en Command
    Bonjour,

    J'aimerai binder un Event de ma View a une Command de mon ViewModel (Loaded pour ce coup ci).

    Est ce qu'il y a des techniques pour ça ?

    Merci

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Mon topic exposait le même problème :
    http://www.developpez.net/forums/d77...mandes-souris/

    Il faut utiliser un genre de pattern décorateur (behavior) pour implémenter les fonctionnalités des Event et donc qu'ils correspondent à des ICommand.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    ok merci !

    Je commence a me demander si mon approche est bonne par contre ...

    Je veux initialiser ma vue avec un ID (on va dire que c'est une vue d'édition d'objet).
    Donc j'aimerai créer ma vue via un constructeur "public MaVue(Guid id)"
    et remonter cet Id dans le ViewModel.

    Je pensais copier ca vers le viewModel dans le constructeur de la vue (un truc du style (DataContext as MonViewModel).ObjectID = id) et ensuite cet id pourrait être utilisé dans le view model une fois l evenement Loaded levé ...

    Mais finalement, ca me parait super crade

    Des avis ?

  4. #4
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Pourquoi est-ce la vue qui reçoit l'id et non pas le ViewModel ?
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  5. #5
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    Euhhhh je ne comprend pas ?

    Passer des ViewModel en argument de la construction d'une vue ? ca se fait ça ?

    Pour le moment j'ai toujours instancié un viewmodel de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        <UserControl.Resources>
            <viewmodels:GraphMarkPartViewModel x:Key="ViewModel" />
            <views:GraphMarkLinesConverter x:Key="GraphMarkLinesConverter" />
        </UserControl.Resources>
        <UserControl.DataContext>
            <Binding Source="{StaticResource ViewModel}"/>
        </UserControl.DataContext>
    Comment je vais pouvoir remplacer ce code si je passe mon ViewModel en argument de mon constructeur ?

  6. #6
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par anthyme Voir le message
    Euhhhh je ne comprend pas ?

    Passer des ViewModel en argument de la construction d'une vue ? ca se fait ça ?

    Pour le moment j'ai toujours instancié un viewmodel de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        <UserControl.Resources>
            <viewmodels:GraphMarkPartViewModel x:Key="ViewModel" />
            <views:GraphMarkLinesConverter x:Key="GraphMarkLinesConverter" />
        </UserControl.Resources>
        <UserControl.DataContext>
            <Binding Source="{StaticResource ViewModel}"/>
        </UserControl.DataContext>
    Comment je vais pouvoir remplacer ce code si je passe mon ViewModel en argument de mon constructeur ?
    Euh je ne sais pas si ma façon est la bonne mais je n'initialise pas de ViewModel via la Vue.

    Dans mon cas c'est la classe principal qui créée mon ViewModel. La Vue n'a pas à connaître le ViewModel, elle doit juste se binder sur le DataContext courant. Evidement ce DataContext courant est le ViewModel.

    A confirmer tout ce que je viens de dire bien sur
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par anthyme Voir le message
    Passer des ViewModel en argument de la construction d'une vue ? ca se fait ça ?
    Non, mais des fois, je fais l'inverse: je passe la vue en paramètre du constructeur du VM.

Discussions similaires

  1. MVVM - Events envoyés par un ViewModel
    Par dotixx dans le forum C#
    Réponses: 3
    Dernier message: 13/11/2012, 08h41
  2. [C#][MVVM] Event Singleton (variable pour l'application)
    Par Monkey56 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 13/09/2010, 14h42
  3. Question MVVM - Event - Command
    Par obito dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 20/08/2010, 15h45
  4. [MVVM]Accèder aux Commands d'un VM depuis un Ribbon
    Par Krustig dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 09/06/2009, 22h10
  5. [Visual C++] Add build events et command line
    Par cfrelet dans le forum MFC
    Réponses: 6
    Dernier message: 11/05/2006, 11h32

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