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 :

questions diverse sur le binding


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
    Octobre 2005
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 352
    Par défaut questions diverse sur le binding
    Bonjour
    1ière question
    Dans mon code cs j'ai une classe avec une propriété
    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
     
     
     
    public class Personne
    {
    private string name;
     
    public string NameProperty 
    {
        get 
        {
            return name; 
        }
        set 
        {
            name = value; 
        }
    }
     
    Personne P1 = new personne(),
     
    P1.NameProperty ="Paul";
    }
    dans mon code XAML je fais référence au namespace relatif à ma classe

    et dans une Textbox je désire afficher le nom contenu dans une instance de ma classe pour ce faire j'utlise le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <textBox Name ="tb" Texte="{Binding Source=P1, Path=NameProperty ,Mode=onway}" width ......./>
    Cette méthode ne permet pas d'afficher la valeur de la propriété name

    Par contre si je déclare dans le code cs mon instance comme Datacontext via le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tb1.datacontext= P1;
    et je supprime la propriété source du binding, alors le nom s'affiche bien

    Pourquoi? où se situe mon erreur ?

    2ième question

    Peut on effectuer un binding sur une propriété static d'une classe et si oui comment ?


    Par avance merci

  2. #2
    Membre éprouvé Avatar de titourock
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 156
    Par défaut
    Il est normal que "ça ne marche pas" dans le premier exemple car le binding repose sur le principe du pattern Observer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Personne P1 = new personne(),
     
    P1.NameProperty ="Paul";
    Lorsque tu fais cela tu changes la valeur de NameProperty mais tu ne notifies pas (dans le setter de ta propriété) que cette valeur change aux différents écouteurs (ici il n'y en a qu'un mais potentiellement autant qu'on veut). En C#, il y a un moyen simple d'implémenter le pattern Observer en implémentant l'interface INotifyPropertyChanged. Le net contient plein d'exemples (dont msdn).

    Sinon je te conseille de regarder le pattern MVVM directement relié à l'interface INotifyPropertyChanged et au binding.

  3. #3
    Invité
    Invité(e)
    Par défaut
    tu trouveras ton bonheur ici.

  4. #4
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Pour ta première question, essaye avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tb1.datacontext = this;
    et tu devrais pouvoir y accéder ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <TextBox Name="tb" Texte="{Binding Source=P1, Path=NameProperty ,Mode=oneway}" />
    Cependant, comme l'a signalé Titourock, la mise à jour ne sera pas automatique en cas de modification de la propriété "Name";
    il faut implémenter l'interface INotifyPropertyChanged.

    Pour ta deuxième question essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <TextBox Name="tb" Texte="{Binding Source={x:Static SomeClass.SomeStaticProperty},Path=NameProperty,Mode=oneway}" />

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

Discussions similaires

  1. Questions diverses sur MySQL 5.0
    Par AsmCode dans le forum SQL Procédural
    Réponses: 14
    Dernier message: 25/01/2007, 16h35
  2. Questions diverses sur les packages
    Par Stief dans le forum Mise en forme
    Réponses: 1
    Dernier message: 15/10/2006, 11h35
  3. [RSS] Questions diverses sur les flux RSS (Google et phpBB)
    Par leserapheen dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 06/10/2006, 14h35
  4. [DW8] Questions diverses sur le logicie
    Par syn_42 dans le forum Dreamweaver
    Réponses: 3
    Dernier message: 01/03/2006, 17h23
  5. Questions diverses sur TIBDataset et TDBGrid
    Par AlexB59 dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/11/2005, 17h14

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