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 :

[débutant] WPF MVVM retourner une multiplication dans listview, observablecollection, binding


Sujet :

Windows Presentation Foundation

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien d'étude
    Inscrit en
    Juin 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien d'étude

    Informations forums :
    Inscription : Juin 2015
    Messages : 87
    Points : 61
    Points
    61
    Par défaut [débutant] WPF MVVM retourner une multiplication dans listview, observablecollection, binding
    bonjour Tout le monde

    voici mon problème :

    dans mon view j'ai une listeview que je bind avec un observablecollection

    dans mon view model : j'ai plusieurs public et private field

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
      }
            public string DiametreExterieure
            {
                get
                {
                    return _DiametreExt;
                }
                set
                {
                    _DiametreExt = value;       
                    OnPropertyChanged("DiametreExterieure");
     
     
                }
            }
            public string Epaisseur
            {
                get
                {
                    return _Epaisseur;
                }
                set
                {
                    _Epaisseur = value;
     
                        OnPropertyChanged("Epaisseur");
                    }              
     
                }
            }
    j'aurais voulu faire avec une troisieme avec un calcul issu des 2 propriétés de l'observablecollection (DiametreExterieur et Epaisseur) :

    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
     
      public string DiametreInterieure
       {
                get
                {
                    return _DiametreInterieure;
                }
                set
                {
                    _DiametreInterieure = (double.Parse(DiametreExterieure, System.Globalization.CultureInfo.InvariantCulture) - 2 * double.Parse(Epaisseur, System.Globalization.CultureInfo.InvariantCulture)).ToString();
     
                        OnPropertyChanged("DiametreInterieure");
                    }              
     
                }
    Mais ça n'a pas l'air de marcher, d'ou ma question comment faire ?
    Merci

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour

    comme DiametreInt=DiametreExt-Epaisseur,c'est d'une prop get dont tu as besoin ...
    il faut virer le setter et le champ private _DiametreInterieur qui sont inutiles;



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
     
      public string DiametreInterieur
       {
                get
                {
                    return (double.Parse(DiametreExterieure, System.Globalization.CultureInfo.InvariantCulture) - 2 * double.Parse(Epaisseur, System.Globalization.CultureInfo.InvariantCulture)).ToString();
                }
     
    }
    bon code...

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    Citation Envoyé par MABROUKI Voir le message
    comme DiametreInt=DiametreExt-Epaisseur,c'est d'une prop get dont tu as besoin ...
    il faut virer le setter et le champ private _DiametreInterieur qui sont inutiles;
    Tout à fait et il faut également ajouter un OnPropertyChanged("DiametreInterieur ") dans chacun des set de DiametreExterieure et Epaisseur pour signaler que diametre interieur est affecté par le changement de l'une de ces valeurs.

  4. #4
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Une technique que j'ai déjà utilisée dans une classe qui implémente INotifyPropertyChanged quand des changements d'une propriété en affectent une autre ou doivent produire des changements internes est d'écouter mon propre événement PropertyChanged. Exemple :
    Code CSharp : 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
    class Person:INotifyPropertyChanged
    {
      /* Insérer le code de gestion de PropertyChanged */
     
      public Person() { PropertyChanged += OwnPropertyChanged; }
     
      private string _lastName;
      public string LastName { get {return _lastName; } set { if(value == _lastName) return; _lastName = value; OnPropertyChanged(); }
      private string _firstName;
      public string FirstName { get {return _firstName; } set { if(value == _firstName) return; _firstName = value; OnPropertyChanged(); }
      private string _fullName;
      public string FullName { get {return _fullName; } set { if(value == _fullName) return; _fullName = value; OnPropertyChanged(); }
     
      private void OwnPropertyChanged(object sender, PropertyChangedEventArgs args)
      {
         switch(args.PropertyName)
        {
          case "LastName":
          case "FirstName":
            FullName = LastName + " " + FirstName;
            break;
          default: break;
        }
      }
    }

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

Discussions similaires

  1. [MySQL] Est-ce possible de retourner une matrice dans une fonction PHP?
    Par zouzino dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/11/2007, 16h53
  2. Réponses: 4
    Dernier message: 20/09/2007, 09h35
  3. [MSSQL 2005] Retourner une erreure dans une SP
    Par Danny Blue dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/08/2006, 08h19
  4. Réponses: 2
    Dernier message: 02/05/2006, 09h32
  5. [vb.net] retourner une valeur dans l'evenement click
    Par graphicsxp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/05/2005, 13h06

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