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 :

Probléme databinding WPF


Sujet :

Windows Presentation Foundation

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut Probléme databinding WPF
    Bonjour à tous,

    J'ai bien cherché une solution pour mon problème via google mais j'ai pas trouvé de problème identique. En gros je travaille sur une application wpf avec du databinding.

    Le principe de cette partie du programme est d'afficher à l’écran dans des Label certaines valeur contenu dans un objet pour ce la j'utilise ce code :

    Code XAML :
    Code xaml : 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
     
     <ScrollViewer DataContext="{Binding CurrentAffaire}" x:Name="bandeau" HorizontalScrollBarVisibility="Disabled" Grid.ColumnSpan="2" Grid.Row="1" Visibility="Visible">
            <Grid >
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="200"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="auto"/>
                </Grid.ColumnDefinitions>
     
                <Image Grid.Column="0" HorizontalAlignment="Left" Name="image1" Stretch="Fill" VerticalAlignment="Stretch" Width="200" Source="/WpfApplication1;component/Ressources/Images/seca_sante.jpg" />
     
                <StackPanel  Grid.Column="1" HorizontalAlignment="Center">
     
                    <DockPanel HorizontalAlignment="Center">
                        <Label FontStyle="Normal" FontSize="16" Content="N° Affaire :" Foreground="White" />
                        <Label x:Name="lbNumAffaire" FontStyle="Italic" FontSize="16" Content="{Binding Path=Num, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
                    </DockPanel>
                    <DockPanel Width="auto" HorizontalAlignment="Center">
                        <Label FontStyle="Normal" FontSize="16" Content="Client :" Foreground="White" />
                        <Label x:Name="lbNomClient" FontStyle="Italic" FontSize="16" Content="{Binding Path=NomClient, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
                    </DockPanel>
                </StackPanel>
     
                <StackPanel Grid.Column="2" HorizontalAlignment="Right">
                    <DockPanel>
                        <Label FontStyle="Normal" FontSize="16" Content="Indice :" Foreground="White" />
                        <Label x:Name="lbIndiceAffaire" FontStyle="Italic" FontSize="16" Content="{Binding Path=Indice, Mode=TwoWay}" />
                    </DockPanel>
                    <DockPanel>
                        <Label FontStyle="Normal" FontSize="16" Content="Date d'édition :" Foreground="White" />
                        <Label x:Name="lbDate" Margin="0,0,8,0" FontStyle="Italic" FontSize="16" Content="{Binding Path=DateEdition, Mode=TwoWay}" />
                    </DockPanel>
                </StackPanel>
            </Grid>
        </ScrollViewer>

    En gros j'ai bindé mes label avec un objet qui s'appelle "currentAffaire", lors du démarrage l'attribution des valeurs se fait très bien (j'initialise avec des valeur de test lors de l’instanciation dans le constructeur de ma classe).

    Mon problème est que lorsque je modifie la valeur de mon objet currentAffaire, les valeurs dans mes labels ne changent pas ....

    Donc voila ça fait plusieurs heures que je penche la dessus sans succès.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    tu as bien des "NotifyPropertyChanged("myProperty")"
    quand tu fais un Set des propriétés de currentAffaire?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut Bon je répond moi même à ma question ... xD
    J'ai trouvé la réponse tout seul en fait ... Mon objet currentAffaire doit implémenter l'interface "INotifyPropertyChanged" Sinon ça met pas à jour les valeur automatiquement ... Suffisait de le savoir ^^.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    Même si je suis devant, je n'ai pas été assez rapide a prèmière vue

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut
    Merci quand même pour la réponse ^^ au moins ça confirme mon idée.

    Dur de respecter le standard MVVM quand on débute en wpf ^^.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 56
    Par défaut
    Bonjour,

    Je me permets de remonter ce sujet car j'ai le même problème ... mais malheureusement moins de succès pour le résoudre malgré les solutions déjà proposées.

    J'ai une classe "Project" comme ci-dessous :

    Code c# : 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
     
    public class Project : INotifyPropertyChanged
        {
            private string _Number;
            public string Number
            {
                get { return _Number; }
                set
                {
                    _Number = value;
                    NotifyPropertyChanged("Number");
                }
            }
     
            public event PropertyChangedEventHandler PropertyChanged;
     
            public ClassProject()
            {
                Number = "1a2b3c";
            }
     
            private void NotifyPropertyChanged(String info)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(info));
                }
            }
        }



    Dans mon interface, j'aimerais binder la chaîne Number de mon projet dans une textbox.

    J'effectue comme ceci dans le code XAML :

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <TextBox DataContext="{Binding rootProject}" Text="{Binding Path=Number, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Name="textBlock1"  />

    rootProject étant l'objet Project que j'ai instancié au préalable.

    Je m'attendais à ce qu'apparaisse quelque chose dans ma textbox, mais ce n'est pas le cas.

    Quelqu'un aurait-il une solution ?

    Merci d'avance.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    tu es sur que ton model est bien lié à ta vue?

    essaye de mettre un breakpoint et de regarder le DataContext de ta vue

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 56
    Par défaut
    heu ... Model ? Vue ?

    Pour le moment j'ai une bête classe qui définit un projet et une interface. Mais peut-être que j'ai manqué une étape.

    la seule mention de DataContext est celle dans le code xaml ... mais je crois pas qu'on puisse mettre un breakpoint.

  9. #9
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    Le modèle = les données stockés

    Exemple une instance de la classe Etudiant avec Nom="Toto" Prenom="Toto"
    Vue = l'interface graphique =>un Wpf.UserControl ou un Wpf.Form ("le xaml")

    Pour que ta vue puisse afficher Nom et Prenom il faut lié la vue à la classe via le DataContext


    Tu peux ajouter un bouton a ta vue et mettre un event sur le click de button pour pouvoir ajouter un breakpoint

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 56
    Par défaut
    Ok, j'ai vérifié mon datacontext et mon binding et maintenant tout fonctionne.

    Encore merci

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

Discussions similaires

  1. problème bouton wpf
    Par damii1 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 16/04/2009, 12h10
  2. Divers problème en WPF
    Par Finality dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 26/03/2009, 20h50
  3. Problème compatibilité WPF entre VS2005/2008 ?
    Par roster dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 13/02/2009, 01h05
  4. [Debutant] Problème lancement WPF
    Par Abdelkrim.se dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 06/03/2008, 16h32
  5. [C# 2.0] Problème Databinding et addnew()
    Par RideKick dans le forum Accès aux données
    Réponses: 1
    Dernier message: 16/10/2006, 09h57

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