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 :

Tuto MVVM : dans le source, une property de type string retourne un booléen ?!


Sujet :

Windows Presentation Foundation

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

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut Tuto MVVM : dans le source, une property de type string retourne un booléen ?!
    Bonjour à tous,

    Toujours dans ma phase d'apprentissage du modele MVVM (du moins en phase de pratique) je suis amené à souvent jetter un oeil dans le tuto MVVM (très bien fait, encore merci à son auteur !)

    Là je suis tombé sur un truc que je ne connaissais pas et souhaitais avoir une petite explication le concernant svp :

    Dans le fichier MasterViewModel.cs, la propriété SearchText est définie comme étant de type string et uniquement en écriture (pas de get).
    Néanmoins, je constate que le setter retourne un booléen. Je sens que c'est un principe de base que je ne connais pas, mais serait-il possible de m'expliquer à quoi sert qu'un setter retourne un booléen alors que la property est de type string svp ?

    En meme temps, je code en vb et j'ai remarqué une nouvelle forme que je ne connaissais pas en C# qui est le "=>" ça doit etre pour ca que je ne comprend pas le return bool...

    Merci d'avance
    @ bientot

  2. #2
    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
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    Citation Envoyé par zax-tfh
    j'ai remarqué une nouvelle forme que je ne connaissais pas en C# qui est le "=>" ça doit etre pour ca que je ne comprend pas le return bool...
    En effet, tu as bien vu. Le "=>" est une partie de ce qui compose une expression lambda :
    http://msdn.microsoft.com/fr-fr/library/bb397687.aspx

    Le return d'un booléen ne s'applique donc pas à la propriété SearchText, mais est propre à l'expression lamba.

    Thomas Lebrun a écrit un tuto expliquant de manière simple les expressions lambda : Comprendre les expressions lambda de C# 3

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 214
    Points : 341
    Points
    341
    Par défaut
    Si tu souhaites discuter de l'article précisément (je suis ouvert à toutes remarques pour l'améliorer...) tu peux le faire sur la discussion dédiée qui se trouve par .

    En tout cas, ravi que cela t'aide

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

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Merci beaucoup Binoo ! Je vais m'instruire de suite
    Jerem22 : non non, aucune remarque concernant le tuto, il est bien tel quel c'etait juste que comme je ne developpe pas en C# j'ai plus l'habitude de la syntaxe VB et donc je ne comprenais pas l'expression lambda. Encore merci pour le tuto

  5. #5
    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 : 42
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par zax-tfh Voir le message
    Néanmoins, je constate que le setter retourne un booléen. Je sens que c'est un principe de base que je ne connais pas, mais serait-il possible de m'expliquer à quoi sert qu'un setter retourne un booléen alors que la property est de type string svp ?
    En fait le setter ne retourne rien du tout : il redéfinit simplement le Filter de la CollectionView. C'est ce Filter qui renvoie true ou false pour indiquer si un élément de la liste doit être affiché ou non.

    Par contre (arrêtez moi si je dis une bêtise), il me semble qu'en VB.NET les expressions lambda ne peuvent pas contenir plus d'une instruction, il faut donc écrire une "vraie" fonction en plus :
    Code : 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
    Public WriteOnly Property SearchText As String
        Set
            Me.collectionView.Filter = Function(item) IsMatch(item, value)
            Me.OnPropertyChanged("SearchContainsNoMatch")
        End Set
    End
     
     
    Private Function IsMatch(item As Object, value As String) As Boolean
        If TypeOf(item) IsNot PersonViewModel Then
            Return False
        End If
     
        Dim p As PersonViewModel = CType(item, PersonViewModel)
        If p.FirstName.Contains(value) Or p.LastName.Contains(value) Then
            Return True
        End If
     
        Return False
     
    End Function

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Par contre (arrêtez moi si je dis une bêtise), il me semble qu'en VB.NET les expressions lambda ne peuvent pas contenir plus d'une instruction, il faut donc écrire une "vraie" fonction en plus
    Il me semble que tu as raison (a noter que mon niveau en VB.NEt est à déploré )

    Par contre, il me semble que cela sera "corrigé"/amélioré avec la prochaine version de VB.NET, qui arrive avec VS 10

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

Discussions similaires

  1. Parenthèses dans une variable de type String
    Par Gringo59 dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/01/2008, 18h05
  2. Réponses: 6
    Dernier message: 05/01/2008, 17h19
  3. Réponses: 6
    Dernier message: 14/02/2007, 21h08
  4. Des " dans une variable de type String
    Par 4lkaline dans le forum Langage
    Réponses: 6
    Dernier message: 06/11/2006, 14h20
  5. [VB]probleme double quote dans une ressource de type string
    Par JulienCEA dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/02/2006, 12h38

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