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 :

Modèle MVVM - Implémentation ICommand


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 Modèle MVVM - Implémentation ICommand
    Bonjour,

    Je suis nouveau sur le forum, sur WPF et même sur techno. .NET en général
    Et donc je suis en ce moment à la mise en place d'une application simple sur le modèle MVVM à partir de la vidéo assez connu sur le sujet de Jason Dolinger.

    Je précise que je développe en VB.NET. J'ai un problème au niveau de l'implémentation d'une commande implémentant ICommand :

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Delegate Sub EventHandler(ByVal sender As Object, ByVal e As System.EventArgs)
        Custom Event CanExecuteChanged As System.EventHandler Implements System.Windows.Input.ICommand.CanExecuteChanged
            AddHandler(ByVal value As System.EventHandler)
                CommandManager.RequerySuggested += value
            End AddHandler
            RemoveHandler(ByVal value As System.EventHandler)
                CommandManager.RequerySuggested -= value
            End RemoveHandler
            RaiseEvent()
            End RaiseEvent
        End Event
    Avec l'erreur
    Use a RaiseEvent statement to Raise an event.
    Ceci résulte de ma traduction du modèle original en C# :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public event EventHandler CanExecuteChanged
    {
      add { CommandManager.RequerySuggested += value; }
      remove { CommandManager.RequerySuggested -= value; }
    }

    Mes questions sont donc comment bien implémenter cette fonction en VB.NET (car je doute vraiment de ma méthode). Et ensuite, l'utilité de cette méthode ? Si j'ai bien compris, elle est appellée lorsqu'il y a un changement qui affecte la commande ? Mais c'est assez imprécis.

    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
    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
    comment bien implémenter cette fonction en VB.NET (car je doute vraiment de ma méthode).
    Utilise Reflector ou des outils de conversion de code

    Et ensuite, l'utilité de cette méthode ?
    Ce n'est pas une méthode mais un évènement. En gros, à chaque fois que la source de la commande est modifiée, on s'abonne à l'évenement RequerySuggested

  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
    Citation Envoyé par Thomas Lebrun Voir le message
    Utilise Reflector ou des outils de conversion de code
    Justement, je viens d'un outils de conversion de code qui souvent a un bon rendu. Mais pour ce point précis, le code qu'il me propose, Visual Studio me jette. Donc mon code vient justement d'un refactoring de code convertit.

    Citation Envoyé par Thomas Lebrun Voir le message
    Ce n'est pas une méthode mais un évènement. En gros, à chaque fois que la source de la commande est modifiée, on s'abonne à l'évenement RequerySuggested
    Ok.
    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
    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
    Pour revenir au problème :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Public Custom Event CanExecuteChanged As EventHandler
        AddHandler(ByVal value As EventHandler)
            If Me.canExecute IsNot Nothing Then
                CommandManager.RequerySuggested += value
            End If
        End AddHandler
        RemoveHandler(ByVal value As EventHandler)
            If Me.canExecute IsNot Nothing Then
                CommandManager.RequerySuggested -= value
            End If
        End RemoveHandler
    End Event
    Ceci ne fonctionne pas (résultant de la conversion C# > VB.NET).

    Je voudrais savoir si quelqu'un aurait un échantillon de la méthode CanExecuteChanged en VB.NET.

    Merci de vos conseils
    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/

  5. #5
    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,

    Tu peux regarder dans la version vb (ici présente) d'un bon article sur le MVVM.

    Extrait du code :
    Code vb : 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
        Public Custom Event CanExecuteChanged As EventHandler Implements System.Windows.Input.ICommand.CanExecuteChanged
            AddHandler(ByVal value As EventHandler)
     
                If _objCanExecuteMethod IsNot Nothing Then
                    AddHandler CommandManager.RequerySuggested, value
                End If
     
            End AddHandler
            '
            RemoveHandler(ByVal value As EventHandler)
     
                If _objCanExecuteMethod IsNot Nothing Then
                    RemoveHandler CommandManager.RequerySuggested, value
                End If
     
            End RemoveHandler
            '
            RaiseEvent(ByVal sender As Object, ByVal e As System.EventArgs)
     
                If _objCanExecuteMethod IsNot Nothing Then
                    CommandManager.InvalidateRequerySuggested()
                End If
     
            End RaiseEvent
        End Event

    Je suis pas trop "vb", donc je n'en dirai pas davantage ^^ (on voit néanmoins quelques différences )

  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
    Merci pour ce lien, je vais regarder ça de ce pas

    Citation Envoyé par binoo
    Je suis pas trop "vb", donc je n'en dirai pas davantage ^^ (on voit néanmoins quelques différences )
    J'avoue ne pas être trop "VB" non plus mais là je n'ai pas le choix de la techno. Venant du monde Java, je trouve aussi le C# plus agréable

    ... Ah cool ce bug tout bête qui me bloquait est résolu, merci (juste un problème de syntaxe donc comme je m'en doutais)

    A très bientôt pour ma prochaine question
    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. Implémentation de INotifyPropertyChanged dans un modèle MVVM
    Par calvi2002 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 17/04/2013, 10h15
  2. [C#] combobox WPF modèle MVVM
    Par july4474 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 29/11/2010, 18h16
  3. Implémenter un modèle MVC en C#
    Par callo dans le forum C#
    Réponses: 13
    Dernier message: 22/04/2008, 14h34
  4. Implémentation modèle OSI
    Par Prayeriz dans le forum Développement
    Réponses: 1
    Dernier message: 16/10/2007, 22h24

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