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

Silverlight Discussion :

Mise à jour en cascade de Dependency Properties


Sujet :

Silverlight

  1. #1
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut Mise à jour en cascade de Dependency Properties
    Hello,

    Je souhaite faire un truc tout simple mais je n'y arrive pas
    J'aimerais que la modification d'une DependencyProperty entraine la modification d'une autre.

    Dans mon ViewModel, j'ai

    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
    32
    33
    34
    public static readonly DependencyProperty UnderlyingSelectedProperty = DependencyProperty.Register
                (
                    "UnderlyingSelected",
                    typeof(Underlying),
                    typeof(MainViewModel),
                    new PropertyMetadata(null, OnUnderlyingSelectedChanged)
                );
             public Underlying UnderlyingSelected
            {
                get { return (Underlying)GetValue(UnderlyingSelectedProperty); }
                set { SetValue(UnderlyingSelectedProperty, value); }
            }
            public static void OnUnderlyingSelectedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
            {
                var ul = e.NewValue as Underlying;
                if (ul != null)
                {
                   // Modifier PricingTask
                }
            }   
     
     public static readonly DependencyProperty PricingTaskProperty = DependencyProperty.Register
                (
                    "PricingTask",
                    typeof(PricingTaskDTO),
                    typeof(MainViewModel),
                    new PropertyMetadata(null)
                );
             public PricingTaskDTO PricingTask
            {
                get { return (PricingTaskDTO)GetValue(PricingTaskProperty); }
                set { SetValue(PricingTaskProperty, value); }
            }
    Le problème est que OnUnderlyingSelectedChanged est static, donc je n'ai pas accès à PricingTask.
    Ca doit être tout con mais je ne trouve pas alors merci à celui qui m'aidera

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 032
    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 032
    Points : 5 469
    Points
    5 469
    Par défaut
    Et dans le set du UnderlyingSelected?

  3. #3
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    ul.PricingTask ça ne marche pas ?

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par micka132 Voir le message
    Et dans le set du UnderlyingSelected?
    C'est ce que j'ai fait mais ça me plait pas trop

  5. #5
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par The_badger_man Voir le message
    ul.PricingTask ça ne marche pas ?
    PricingTask n'est pas un objet fils de ul

  6. #6
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    J'avais mal lu.
    Le paramètre d est objet de type MainViewModel. Il suffit de le caster.

  7. #7
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par The_badger_man Voir le message
    J'avais mal lu.
    Le paramètre d est objet de type MainViewModel. Il suffit de le caster.
    Ah? Il est pas de type PricingTaskDTO, certain? (j'ai pas trop le temps de tester ça pour le moment )

  8. #8
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static void OnUnderlyingSelectedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var ul = e.NewValue as Underlying;
        if (ul != null)
        {
            d.SetProperty(PricingTaskProperty, nouvelle valeur ici);
        }
    }
    Non?

  9. #9
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Il faut utiliser ton sender.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var vm = sender as MainViewModel;
    vm.SetValue(MainViewModel.PricingTaskProperty, xxx);
    // ou
    vm.PrincingTask = xxx;

    Et apres ma question qui tue : pourquoi des Dependency Property dans ton ViewModel ? Pourquoi pas des propriétés simples ?

    EDIT : c'est pas sender dans ton code mais 'd'.

  10. #10
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Et apres ma question qui tue : pourquoi des Dependency Property dans ton ViewModel ? Pourquoi pas des propriétés simples ?
    Tu veux dire des propriétés avec le raisepropertychanged machin chose?

  11. #11
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Tu veux dire des propriétés avec le raisepropertychanged machin chose?
    Yes.
    J'avais vu une discussion sur ca dans des discussions MVP mais je retrouve pas.

    Sinon y'a ce poste qui comparer les proprietes vs les DP

    http://kentb.blogspot.com/2009/03/vi...os-versus.html

  12. #12
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Dans le cas ou tu utilises d.SetValue , il n'y a même pas besoin de cast

  13. #13
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Dans le cas ou tu utilises d.SetValue , il n'y a même pas besoin de cast
    Ah ben oui c'est deja un DependencyObject

  14. #14
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    On utilise des DP car l'expert MCS qui est venu nous former sur SL faisait comme ça.
    On garde les NotifyPropertyChanged pour les Models "rappatriés" côté SL par RIA

  15. #15
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    On utilise des DP car l'expert MCS qui est venu nous former sur SL faisait comme ça.
    On garde les NotifyPropertyChanged pour les Models "rappatriés" côté SL par RIA
    A part ce débat, ca marche avec la proposition?

  16. #16
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    A part ce débat, ca marche avec la proposition?
    Pas encore testé

  17. #17
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    On utilise des DP car l'expert MCS qui est venu nous former sur SL faisait comme ça.
    On garde les NotifyPropertyChanged pour les Models "rappatriés" côté SL par RIA
    Je suis étonné. Pour moi les DP sont liés aux controls et pas aux viewmodels.
    D'ailleurs elle sont utilisées pour gérer le DatBinding, Style et autres animations ce qui n'est pas vraiment la tasse de thé des ViewModels. De plus je crois qu'elles peuvent poser qq soucis du genre : pas d'accès InterThread, pas de serialisation.

Discussions similaires

  1. Mise à jour en cascade
    Par spidey89 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/09/2010, 09h35
  2. Réponses: 5
    Dernier message: 21/01/2010, 12h15
  3. mise à jour "en cascade" Projet Gestion de parc informatique
    Par fomy dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 17/03/2008, 11h55
  4. Mise à jour en CASCADE
    Par TINAVONJ dans le forum Oracle
    Réponses: 4
    Dernier message: 26/11/2007, 14h18
  5. mise à jour en cascade
    Par mick84m dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/09/2006, 17h26

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