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 :

Notifier le parent d'un UserControl qu'un changement a eu lieu


Sujet :

Windows Presentation Foundation

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Par défaut Notifier le parent d'un UserControl qu'un changement a eu lieu
    Bonjour à tous,

    J'ai un petit problème :
    J'ai un UserControl et dans le xaml.cs de UC, j'ai une commande routée pour un bouton.
    Or je voudrais avertir le parent de celui-ci qu'il y a eu un changement pour pouvoir appeler une méthode.
    Mais je ne vois pas trop comment faire.....
    Pour le moment, j'ai passée toute cette mécanique dans le xaml.cs de mon parent, mais je ne trouve pas cela joli et je pense qu'il doit y avoir un moyen de le faire......
    Merci d'avance
    LaMeule

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je ne comprends pas ce que tu ne trouves pas joli dans ce que tu as déjà fait. Si tu peux nous donner plus de détails sur le pourquoi

    Sinon il faut savoir qu'il y a l’événement PropertyChanged que tu peux utiliser pour être notifié qu'une propriété particulière de ton ViewModel à changer de valeur ou pas. Si cela peut t'aider.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Par défaut
    Merci de ta réponse.....

    La fenêtre de mon application est divisé en 3 parties :
    - liste box avec différents éléments
    - une partie où certaines informations sont affichées
    - une dernière partie qui est lié à l'item sélectionné.
    Les 2 premières sont le xaml principal.

    C'est cette dernière partie qui me bloquent :
    Ce sont 3 UserControl et en fonction de l'item sélectionné, je ne rend visible qu'un seul UserControl. Tout cela fonctionne correctement.

    Mais je dois rajouter un champ dans la 2 ème partie qui est calculé.
    Or si je mets à jour des informations qui sont eux dans les userControls.
    Mon nouveau champ n'est pas recalculé, car non notifié.

    Donc je souhaite juste que lorsque je mets à jour certaines informations, mon xaml principal soit notifié et mis à jour.

    Sinon pour le côte esthétique, c'est juste que mon code est déjà dans les usercontrols et je ne vois pas trop l'intêret de remonter ce code dans le xaml.cs principal, mais cela ne reste qu'un point de vue.

    Merci
    LaMeule

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 436
    Par défaut
    Bonjour,

    Utilises-tu des dependency property dans tes UC contenus dans la mainpage ?

    Utilises-tu un framework MVVM ? (pour savoir si tu as déjà le système de messagerie en place ou pas)

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Par défaut
    Citation Envoyé par Kikuts Voir le message
    Bonjour,

    Utilises-tu des dependency property dans tes UC contenus dans la mainpage ?
    NON

    Utilises-tu un framework MVVM ? (pour savoir si tu as déjà le système de messagerie en place ou pas)
    OUI

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 436
    Par défaut
    Oui : lequel ?

    Donc soit tu utilises le systèmes de messagerie de ton framework mvvm : tu envoies un objet contenant les infos que tu souhaites diffuser aux autres UC. Dans ces UC (ton mainpage) tu écoutes ce type de message. C'est super simple ! Sur google tu trouveras des dizaines d'exemples.

    Sinon, il te faut utiliser les DP :

    Dans ton mainpage.xaml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <grid x:name="LayoutRoot">
     
    <local:MonUserControl MaDependencyProperty={Binding MaProprieteANotifier, Mode=TwoWay} />
     
    </grid>
    Et dans ton local:MonUserControl.cs :

    (j'ai pris un code en vb.net désolé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	Public Shared ReadOnly MaProprieteANotifierProperty As DependencyProperty = DependencyProperty.Register("MaProprieteANotifier", GetType(TypeDeMaProprieteANotifier (ex : string)), GetType(MonUserControl), New PropertyMetadata(Nothing))
     
    	Public Property MaProprieteANotifier() As TypeDeMaProprieteANotifier 
    		Get
    			Return GetValue(MaProprieteANotifierProperty )
    		End Get
    		Set(ByVal value As TypeDeMaProprieteANotifier )
    			SetValue(MaProprieteANotifierProperty , value)
    		End Set
    	End Property
    Et ainsi, ton mainpage sera notifier des modifs effectuées sur l'objet passé par Dependency Property.


    Mais avant de faire cela, vérifie que tu implémentes bien l'interface INotifyPropertyChanged, que tes RaisePropertyChanged ont le bon nom de variable en paramètre.


    PS : un exemple de code nous aurait aidé à t'aider. Si tu ne nous aide pas, comment peut-on t'aider ?

Discussions similaires

  1. Acceder aux ressources d'un parent dans un UserControl
    Par mona dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 12/01/2010, 20h45
  2. Parent pour un UserControl
    Par ludogoal dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 27/04/2009, 19h52
  3. Réponses: 5
    Dernier message: 25/07/2007, 08h25
  4. Réponses: 9
    Dernier message: 10/06/2007, 21h43
  5. [VB5] Propriété Parent du usercontrol : existe -elle en VB 5 et s
    Par lapinot dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 19/09/2005, 09h36

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