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 :

Question sur le binding


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 133
    Par défaut Question sur le binding
    Re-bonjour !

    J'apprends actuellement à utiliser MVVM avec WPF,
    et quelques trucs m'échappent...!

    J'ai une Combobox et des TextBox. La Combobox est bindé à une liste d'objets (disons que ce sont des objets Client), elle permet d'afficher et de sélectionner un ID, et j'aimerais afficher dans des TextBox les valeurs des propriétés de l'objet selon l'ID sélectionné - classique quoi.

    Voici le XAML correspondant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <ComboBox ItemsSource="{Binding Path=Clients, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding Path=SelectedItem}" DisplayMemberPath="id_client" IsSynchronizedWithCurrentItem="True" />
                        <TextBox Text="{Binding Path=SelectedItem, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Width="100" />
    Clients est donc la méthode publique qui me permet de récupérer ma liste de clients (retourne un objet de type List<Clients> et mon ViewModel implémente INotifyPropertyChanged donc la méthode OnPropertyChanged est appelé dans le setter de Clients).

    Ma Combobox marche, en revanche ma TextBox n'affiche rien du tout.
    Pourtant, quand je mets des points d'arrêt sur la méthode publique SelectedItem, je vois bien que le setter est appelé quand je sélectionne un ID, que ma variable privée _selectedItem est bien égal à l'objet client correspondant à l'ID, mais aussi que le getter est appelé, et pourtant la TextBox n'affiche vraiment rien.

    Ma question c'est comment faire pour qu'elle affiche au moins quelque chose, et bien sûr comment faire pour qu'elle affiche une propriété de l'objet _selectedItem (par exemple le nom du client, son âge, etc...).

    Merci !

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 133
    Par défaut
    Bon toutes ces explications et un post de plus pour trouver la réponse 1minute après, j'avais fait une erreur en testant la solution SelectedItem.propriété...!

    Il suffisait de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <TextBox Text="{Binding SelectedItem.nom, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Width="100" />
    J'avais mis une majuscule à nom, shame on me, et merde à VS qui m'a habitué à l'intellisense

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/10/2011, 14h30
  2. Question générale sur le Binding!
    Par takinelinfo dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 07/06/2011, 14h26
  3. question sur la fonction bind
    Par deubelte dans le forum SL & STL
    Réponses: 11
    Dernier message: 27/10/2010, 09h08
  4. questions diverse sur le binding
    Par TERRIBLE dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 24/10/2010, 18h00
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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