1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien d'étude
    Inscrit en
    juin 2015
    Messages
    42
    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 : 42
    Points : 28
    Points
    28

    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
    Membre expert
    Inscrit en
    avril 2008
    Messages
    1 865
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : avril 2008
    Messages : 1 865
    Points : 3 198
    Points
    3 198

    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
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    novembre 2009
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : novembre 2009
    Messages : 1 190
    Points : 2 611
    Points
    2 611

    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 averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juin 2007
    Messages : 236
    Points : 328
    Points
    328

    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. 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