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 :

Data Binding avec une donnée


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 23
    Par défaut Data Binding avec une donnée
    Bonjour,
    Pourriez-vous m'aider à réaliser un data binding sur une checkbox ? Voici mon problème :

    J'ai une classe myClass qui contient un booléen myBool. Elle implémente l'interface INotifyPropertyChanged et tout ce qu'il faut.
    Dans ma fenêtre, je déclare en resource une instance de cette classe et la propriété IsChecked de la checkbox est dépendante de myBool.
    Tout cela fonctionne et voici le code de la classe myClass:
    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
     
    public class myClass : INotifyPropertyChanged
    {
      public myClass()
      {
      }
     
      private bool myPrivBool;
      public bool myBool
      {
        get { return myPrivBool; }
        set
        {
          myPrivBool = value;
          OnPropertyChanged("myBool");
        }
      }
     
      public event PropertyChangedEventHandler PropertyChanged;
      protected void OnPropertyChanged(string name)
      {
          PropertyChangedEventHandler handler = PropertyChanged;
          if (handler != null)
          {
              handler(this, new PropertyChangedEventArgs(name));
          }
      }
    }
    et du XAML :
    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
     
    <Window
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:src="clr-namespace:SDKSample"
      Title="Simple Data Binding Sample">
     
        <Window.Resources>
            <src:myClass x:Key="myDataSource" myBool="True"/>
        </Window.Resources>
     
        <StackPanel >
            <CheckBox IsChecked="{Binding Source={StaticResource myDataSource}, Path=myBool, Mode=TwoWay}" Content="CheckBox"/>
        </StackPanel>
    </Window>
    Le problème c'est que cette fenêtre est une boîte de dialogue et que je veux utiliser les données d'une instance myClass déjà existante, et non pas instancier une autre classe myClass dans les resources de cette boîte de dialogue.
    Comment faut-il faire ????

    Je vous remercie d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Au lieu d'instancier ta classe myClass dans les ressources de ta fênetre tu peux le faire dans le fichier app.xaml comme ça ce sera accessible de partout dans ton application y compris ta boite de dialogue.

  3. #3
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Je commence à peine WPF, mais tu peux toujours regarder du côté du ObjectDataProvider, afin de définir une source de données que tu pourras lier à l'objet que tu veux. Ca correspond assez bien je pense.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 23
    Par défaut
    Je ne savais que cela marchait comme ça ! Je le resortirai pour d'autres objets...
    Cependant, dans mon cas présent, j'ai plusieurs instances différentes de myClass, et je dois gérer avec ma boîte de dialogue une de ces instances. De plus, chacune de ces instances est une propriétée d'un objet de type document (pas la classe, mais le concept). Je ne peux donc pas la déclarer comme une resource dans app.xaml...

  5. #5
    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
    Si tu utilises un ObjectDataProvider, tu peux utiliser sa propriété ObjectInstance pour lui dire d'utiliser une instance d'une classe qui est déjà définie, plutôt que d'en recréer une.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 23
    Par défaut
    Désolé, StormimOn. Je n'avais pas vu ta réponse. Merci à vous trois. Je vais lire le document généreusement mis en ligne.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 23
    Par défaut
    L'ObjectDataProvider correspond tout à fait à la solution de mon problème. Merci encore...

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

Discussions similaires

  1. Probléme avec DATA liaison avec une base de données
    Par patbold dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 26/03/2011, 10h28
  2. Réponses: 2
    Dernier message: 28/02/2008, 15h39
  3. Réponses: 2
    Dernier message: 31/07/2006, 20h09
  4. [MySQL] Tester une égalité avec une donnée de type PASSWORD
    Par tiyolx dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/03/2006, 16h06

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