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 :

INotifyPropertyChanged en cascade avec linqToSql


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Par défaut INotifyPropertyChanged en cascade avec linqToSql
    Bonjour à tous

    J'ai remarqué que les classes générées avec linqtosql implémente INotifyPropertyChanged. C'est parfait pour l'affichage en WPF mais voici mon problème :

    J'ai 3 tables, une Film, une Langue et une table de jointure entre les deux FilmLangue

    Quand je change quelque chose dans film l'affichage se rafraîchit automatiquement.
    Par contre si je fait Film.FilmLangue.add (new FilmLangue(){Film = f; Langue = l}) l'évènement onpropertychanged de FilmLangue ne se propage pas a Film.

    J'ai donc essaye de rajouter dans le code généré dans linq 2 choses :
    - une méthode public dans film qui invoke onPropertyChanged de Film
    - dans la méthode qui invoke onPropertyChanged : appeler la méthode crée au dessus pour le film de LangueFilm.
    Cela marche très bien jusqu a ce que je modifie une table... a ce moment la mon code disparaît :s

    En faisant un clique droit sur une table du schéma de linq et view code, un nouveau fichier apparaît et j'ai:
    partial class Film {} partial class FilmLangue ...

    J'arrive bien a recréer une fonction public qui invoke le onPropertyChanged de Film, par contre je bloque sur FilmLangue, je ne sais pas comment faire pour surcharger la méthode d'invoke pour qu'elle appelle celle de film ...

    Je ne sais vraiment si j'ai été claire si besoin je peux développer un peu plus

    Merci d'avance

  2. #2
    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
    C'est quoi le type de FilmLangue ? ObservableCollection ou une simple liste ?

  3. #3
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    Citation Envoyé par Tanou Voir le message
    J'arrive bien a recréer une fonction public qui invoke le onPropertyChanged de Film, par contre je bloque sur FilmLangue, je ne sais pas comment faire pour surcharger la méthode d'invoke pour qu'elle appelle celle de film ...
    hello,

    Si je comprends bien ton problème tu peux faire le même système sur FilmLangue pour qu'il déclenche un événement PropertyChanged en cas de modification. Ensuite dans Film tu dois t'abonner à ces modifications....

  4. #4
    Membre averti
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Par défaut
    Le type de Film.FilmLangue c'est un EntitySet<FilmLangue>

    FilmLangue déclenche bien l'évenement de FilmLangue mais dans FilmLangue il y a FilmLangue.Film et j'aimerai bien qu'il déclenche l'évenement pour se film la


    Dans Wpf j'ai une listview et une de ses collones est bindée sur Film.FilmLangue

    Voila pourquoi j'aimerai propager le onPropertyChanged de FilmLangue juste à son film (FilmLangue.Film) et non pas a tous les films

  5. #5
    Membre averti
    Inscrit en
    Février 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 14
    Par défaut
    Trouvé !

    Les classes crées avec linqToSql ont des méthodes pour ajouter des fonctionnalités un peu partout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #region Extensibility Method Definitions
        partial void OnLoaded();
        partial void OnValidate(System.Data.Linq.ChangeAction action);
        partial void OnCreated();
        partial void OnfkfichierChanging(long value);
        partial void OnfkfichierChanged();
        partial void OnfklangueChanging(long value);
        partial void OnfklangueChanged();
        #endregion
    J'avais juste à mettre ca dans le nouveau fichier linq
    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
     
    partial class FilmLangue
        {
            partial void OnCreated()
            {
                this.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(FilmLangue_PropertyChanged);
     
            }
     
            void FilmLangue_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
            {
                if (this.Film != null)
                    this.Film.Invoke("FilmLangues");
            }
        }
     
     
    partial class Film
        {
            public void Invoke(string name)
            {
                this.SendPropertyChanged(name);
            }
        }

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/12/2007, 15h31
  2. Réponses: 4
    Dernier message: 18/09/2007, 12h32
  3. CASCADE avec Innodb
    Par bigltnt dans le forum Requêtes
    Réponses: 4
    Dernier message: 26/03/2007, 17h22
  4. [VBA-E] ComboBox en cascade avec correspondance dans matrice
    Par ViperSpy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/06/2006, 17h01
  5. Delete on cascade avec SQL server
    Par fadoua dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/01/2004, 11h02

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