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] Les commandes de la souris


Sujet :

Windows Presentation Foundation

  1. #1
    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 [MVVM] Les commandes de la souris
    Je croyais mieux saisir le concept des commandes mais je bloque sur comment implémenter correctement une commande double-clique en respectant l'aspect MVVM.

    En fait j'ai un tableau de données et je voudrais que le double clique sur un champs initialise un UserControl à coté détaillant l'élément. Je sais que dans les propriétés du XAML, je trouve la propriété MouseDoubleClick mais elle m'oblige à traiter cette commande en évènementiel, ce que je ne veux pas faire.

    Le MouseDoubleClick="{Binding DoubleClickCommand}" ne peut pas fonctionner.

    Comment binder l'élément du coté XAML ? .. et le lier facilement au ViewModel.
    Merci de vos réponses.
    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/

  2. #2
    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
    Une autre alternative, qui permet de lier des commandes à plusieurs évènements : Attached Command Behavior

  3. #3
    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
    Bonsoir.

    Alors effectivement c'est ce que je recherchais merci

    Je suis entrain d'implanter la solution de tomlev. Mon principale blocage vient de l'intégration C# en VB.NET
    Par exemple :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ClearMessagesCommand = new SimpleCommand
     {
      ExecuteDelegate = x => Messages.Clear(),
      CanExecuteDelegate = x => Messages.Count > 0
    };


    J'ai besoin de retourner un paramètre pour une raison particulière : l'utilisation du double clique sur un composant Infragistics : la XamDataGrid. Après visite du forum associé, j'ai eu la mauvaise surprise que l'évènement DoubleClick sur un champ d'une grille n'était pas géré par défaut :
    http://forums.infragistics.com/forum...204.aspx#11204

    "MouseDoubleClick" est donc disponible sur toute la XamDataGrid (nom de colonne et scrollbar incluse ). Donc mon idée serait de récupérer l'évènement sélectionné lors du double click et dans la commande, de vérifier le typage de l'objet sélectionné. Si celui-ci ne serait pas valide, ça voudrait donc dire que le double click n'était pas sur un champs de la grille.

    Je ne sais pas si je suis clair dans mes explications et si cette idée est la plus simple à réaliser ?


    PS : L'idée des commandes dans le modèle MVVM est une bonne idée de structuration mais sa mise en place demande tout de même une très bonne compréhension de la chose
    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/

  4. #4
    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 Robin56 Voir le message
    La solution de Thomas Lebrun s'implante assez facilement? Cependant, ayant besoin de passer des paramètres
    La solution que je t'ai proposé te permet de le faire, il faut juste le rajouter

  5. #5
    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 Thomas Lebrun Voir le message
    La solution que je t'ai proposé te permet de le faire, il faut juste le rajouter
    En fait, d'après ce que je viens de voir, les Arguments EventArgs sont déjà géré via ta solution. Un MouseEventArgs a ainsi été envoyé dans ma fonction d'exécution.

    Juste pour illustrer un peu mes propos. Voici l'appel donc de ma propriété ICommand DoubleClickCommand :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me._doubleClickCommand = New RelayCommand(AddressOf Me.DoubleClick, AddressOf Me.CanDoubleClick)

    Et le param de cette fonction me renvois un MouseEventArgs.
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Public Sub DoubleClick(ByVal param As Object)
    Donc cette solution fonctionne dans l'état des fonctionnalités que je souhaite pour le moment


    Et pour mon histoire de gérer mon MouseDoubleClick. Je renvois aussi ma solution si ça peut servir.

    J'ai, en fait, redéfinis l'évènement OnMouseDoubleClick dont quelques idées sont données par ici. Et donc dans la méthode OnMouseDoubleClick, je ne gère pas l'évènement lorsque l'élément source n'est pas un type de données (ce qui signifie que le clique n'est pas dans le tableau).


    Merci pour vos réponses
    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/

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

Discussions similaires

  1. Capturer les event de ma souris en dehors de mon appl
    Par bpy1401 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 28/07/2005, 16h59
  2. Le TEdit ne recçoit plus les messages de la Souris
    Par bartak dans le forum C++Builder
    Réponses: 7
    Dernier message: 28/02/2005, 13h41
  3. [MS-DOS] Les commandes
    Par l@rry dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 10/01/2005, 14h18
  4. Ecouter les evenements clavier et souris
    Par init dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 24/11/2004, 20h02
  5. Limiter les déplacement de la souris a la fenetre
    Par Mathieu.J dans le forum OpenGL
    Réponses: 22
    Dernier message: 11/06/2004, 12h55

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