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 :

Bind d'une textbox d'une usercontrol sur une Dependency property


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Par défaut Bind d'une textbox d'une usercontrol sur une Dependency property
    Bonjour, je n'arrive pas à bind la propriété text d'une textbox sur une dependency property du usercontrol. Cette propriété est pourtant bien mise à jour. Un petit coup de debuggage permet de le vérifier.
    Voici ce que j'ai fait :
    (bon j'ai pas mis tout ce que contenait chaque classe)
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
     
    public class HeuresMOMatriJour : INotifyPropertyChanged, IExtensibleDataObject
        {
     
            private int _hprod;
     
            public ExtensionDataObject ExtensionData { get; set; }
     
            public event PropertyChangedEventHandler PropertyChanged;
     
            private void NotifyPropertyChanged(String propertyName)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
                }
            }
            #endregion
     
     
            [DataMemberAttribute(Order = 1, IsRequired = true)]
            public int HeuresProd { get { return _hprod; } set { _hprod = value; NotifyPropertyChanged("HeuresProd"); } }
    }
     
     
        public partial class ControleFiltreRessourcesMO : UserControl
        {
            public static readonly DependencyProperty HeureMoToModifyProperty = DependencyProperty.Register("HeureMoToModify", typeof(HeuresMOMatriJour), typeof(ControleHeuresMO));
     
            public HeuresMOMatriJour HeureMoToModify
            {
                get { return (HeuresMOMatriJour)GetValue(HeureMoToModifyProperty); }
                set { SetValue(HeureMoToModifyProperty, value); }
            }
     
     Binding bindHPROD;
     
    public ControleFiltreRessourcesMO()
            {
                InitializeComponent();
     
                bindHPROD = new Binding();
                bindHPROD.Source = this.HeureMoToModify;
                bindHPROD.Mode = BindingMode.TwoWay;
                bindHPROD.NotifyOnSourceUpdated = true;
                bindHPROD.NotifyOnTargetUpdated = true;
                bindHPROD.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
                bindHPROD.Path = new PropertyPath("HeuresProd");
                this.tbHeuresProd.SetBinding(TextBox.TextProperty, bindHPROD);
            }
    }
    Edit : en faisant un debug, je m'appercoit que pour BindHPROD, la source est null et que HeureMoToModify possède bien les valeurs que je souhaite...

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Faut pas te binder sur ta DP, faut que tu te bindes sur l'objet en lui-même et que tu passes le path de ta propriété.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Par défaut
    Merci mais mince, j'essaye de comprendre ta réponse, mais je sais sis c'est parce que j'ai trop mangé ou trop bu ce midi, mais j'y arrive pas !

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bindHPROD.Source = this;

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Par défaut
    Merciii !! ça marche !

    j'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
               bindHPROD.Source = This
                bindHPROD.Path = new PropertyPath("HeureMoToModify.HeuresProd");
    et en plus j'avais fait une erreur...copier coller power... :
    le type de ma DP ne devait pas être ControleHeuresMO mais ControleFiltreRessourcesMO ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        public partial class ControleFiltreRessourcesMO : UserControl
        {
            public static readonly DependencyProperty HeureMoToModifyProperty = DependencyProperty.Register("HeureMoToModify", typeof(HeuresMOMatriJour), typeof(ControleHeuresMO));
    //...
    }
    //replacé par : 
        public partial class ControleFiltreRessourcesMO : UserControl
        {
            public static readonly DependencyProperty HeureMoToModifyProperty = DependencyProperty.Register("HeureMoToModify", typeof(HeuresMOMatriJour), typeof(ControleFiltreRessourcesMO ));
    }
    En fait dans le fonctionnement j'ai 1 controle Pere et 2 controle fils, 1 pour le datagrid et un pour le filtrage et les modifs du datagrid.
    Donc maintenant quand que selectionne une ligne de mon datagrid (controleFils1) j'ai mon controleFils2 qui se met à jour en fonction de celle-ci.
    Et quand je modifie une propriété dans mon controleFils2 cela modifie en direct la ligne du controleFIls1.

    Par contre comme mon controleFils1 qui a le dagatrid est bindé à une observableCollection. Quand je modifie DAns controleFils1 ça modifie dans controleFils1 et dans la collection.
    Mais l'evenement CollectionChanged n'est jamais déclenché...Ca peut venir d'ou ? Merci !

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Par défaut
    Par contre j'au un nouveau probleme, j'ai plusieurs textbox à bind sur ma DP.
    Avec un Bind b = new bin... etc ça marche, mais des que j'en pet 2 l'appli plante au lancement. Comment il faut faire pour binder plusieurs textbox ? merci !

Discussions similaires

  1. Copier une image sur une feuille et la coller sur une autre feuille
    Par Hierog dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 17/03/2011, 12h21
  2. DHCP sur une @IP 1 et DNS sur une @IP 2
    Par polls dans le forum Réseau
    Réponses: 1
    Dernier message: 20/08/2010, 12h27
  3. [XL-2002] Ecouter un evenement sur une cellule et le reproduire sur une autre cellule
    Par kulnae dans le forum Macros et VBA Excel
    Réponses: 28
    Dernier message: 17/08/2009, 21h21
  4. Réponses: 3
    Dernier message: 16/04/2009, 22h17
  5. Acceder a une TextBox qui se trouve sur une Autre Form
    Par le_contact dans le forum Windows Forms
    Réponses: 15
    Dernier message: 14/04/2007, 00h10

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