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 :

[WPF]Références partagé entre un Contrôle et une liste


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Par défaut [WPF]Références partagé entre un Contrôle et une liste
    Bonjour,

    Voila j'ai créé un UniformGrid comme ceci:
    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
     
    zones = new List<AirportZone>( Rows * Columns );
     
                for ( int j = 0; j < Rows; ++j )
                {
                    for ( int i = 0; i < Columns; ++i )
                    {
                        AirportZone zone = new AirportZone( new Point( i, j ),
                                                            String.Empty,
                                                            false );
                        zones.Add( zone );
                        SetEventsToZone( zone );
                        Children.Add( zone );
                    }
                }
     
                UpdateLayout( );
    Quand je modifie une "zone" dans la liste, celle-ci n'est pas modifié dans Children, pourquoi?

    Voici un exemple de modification:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                    zones[ index ].IsBuilt = true;

  2. #2
    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
    C'est parce que le container de la zone n'est pas notifié du changement, même si "AirportZone" implémente INotifyPropertyChanged.

    Tu vas sans doute être obligé de gérer la notification toi-même;
    une solution pas très élégante serait d'utiliser une ObservableCollection à la place d'une List et de retirer puis réajouter tout élément modifié.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Ta classe AirportZone doit implémenter INotifyPropertyChanged, pour notifier l'interface graphique quand une propriété est modifiée. Sinon le binding n'a aucun moyen de savoir que quelque chose a changé...

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Par défaut
    Ah d'accord, bah j'ai fait ce que tu m'as dit en utilisant l'interface INotifyPropertyChanged, mais ça ne marche pas, je ne dois pas binder manuellement mon conteneur parent (UniformGrid) avec la liste en question?

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Il faudrait que tu donnes plus d'informations... tu en fais quoi de ta liste de zones exactement ? Et comment as-tu implémenté INotifyPropertyChanged ?

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Par défaut
    J'ai un uniformGrid de AirportZone et une liste de AirportZone aussi. J'ai choisi d'avoir une List de AirportZone pour faciliter l'utilisation dans une application extérieur, c'est plus agréable d'utiliser une List qu'une UICollection... (Point de vue personnel)

    Voici comment j'ai implémenté la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void NotifyPropertyChanged( String info )
    {
                if ( PropertyChanged != null )
                {
                    PropertyChanged( this, new PropertyChangedEventArgs( info ) );
                }
    }
    Je l'ai écri dans une méthode pour faciliter alléger le code...

    Un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
                        NotifyPropertyChanged( "BackgroundImage" );

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    OK, mais comment tu fais pour afficher tes AirportZone ? Avec un DataTemplate ?

Discussions similaires

  1. Réduire l'espace entre un titre et une liste
    Par Akazed dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 18/02/2010, 10h08
  2. [Rendering] Création d'un contrôle ayant une liste
    Par Woufeigh dans le forum Windows Forms
    Réponses: 0
    Dernier message: 29/03/2009, 21h15
  3. Lien entre deux colonnes dans une liste (utilisation de combobox)
    Par cantanna1988 dans le forum SharePoint
    Réponses: 7
    Dernier message: 02/03/2009, 17h10
  4. Réponses: 4
    Dernier message: 26/02/2009, 16h58
  5. Réponses: 1
    Dernier message: 18/04/2007, 11h14

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