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 :

Rafraichir un affichage HierarchicalDataTemplate


Sujet :

Windows Presentation Foundation

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 196
    Par défaut Rafraichir un affichage HierarchicalDataTemplate
    Bonjour tout le monde !

    J'utilise des HierarchicalDataTemplate pour afficher une arborescence d'objet tiré de ma base sous la forme d'un TreeView. Via mon interface, un utilisateur peut ajouter des fils aux différents noeuds de l'arbre : un clic droit sur le noeud, il choisit "ajouter fils" dans le menu contextuel, une fenêtre lui permet d'éditer son objet et hop, fini.

    Voici la fin de la fonction appellé par le clic sur "ajouter fils"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                // Si edition/selection avec succès, ajout de l'élément
                if (fenetre.DialogResult == true)
                {
                    ((sender as MenuItem).DataContext as IZI_OBJETS).IZI_ITEMS.Add(element);
                    tv_configuration.Items.Refresh();
                }
    Mon soucis, c'est que le refresh du treeview (tv_configuration) ne fonctionne pas. L'EntitySet IZI_ITEMS a bien un élément en plus, mais pas moyen de l'afficher.
    A noter que le chargement initial ne pause aucun problème : tout s'affiche comme il devrait.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 214
    Par défaut
    Quand tu exécutes cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((sender as MenuItem).DataContext as IZI_OBJETS).IZI_ITEMS.Add(element);
    Est-ce que ton objet IZI_OBJETS.IZI_ITEMS notifie bien qu'un nouvel item a été ajouté ? Pour cela soit tu utilises une ObservableCollection, soit tu implémentes l'interface INotifyPropertyChanged.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 196
    Par défaut
    Oui, IZI_OBJETS et IZI_ITEMS sont issus du designer LINQ de visual. Quand a vérifier si la notification se fait bien, je sais pas trop comment m'y prendre mais elle devrait y être.

    Il n'y a pas d'option synchronisation au niveau d'itemsource ou autre ? Je cherche mais je ne trouve pas, et j'ai aps d'autre idée la

  4. #4
    Membre très actif
    Avatar de UNi[FR]
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 340
    Par défaut
    J'ai eu le même soucis que toi, et il faut regarder du coté de INotifyCollectionChanged ou INotifyPropertyChanged.

    en tout cas n'ayant pas eu le temps de regarder plus en détails ces interfaces je me suis tourné vers un rafraichissement manuel !! (dans le tag de mon treview item de met un objet qui contient l'ID du parent et l'ID de l'item). Ce qui me permet de mettre à jour facilement le treeView sur le noeud qui m'intéresse.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 196
    Par défaut
    Je suppose que le TreeView implémente déjà son lot de INotify, et mes classes "métiers" sont issues du designer LINQ qui implémente également ces interfaces.

    A tout hasard, je vais essayer voir ce qui se fait en ObservableCollection pour mettre dans le datacontext du TreeView. M'enfin j'y crois moyen

    Je serai curieux de voir ce que tu fais pour ton rafraichissement manuel. La seule chose qui fonctionne chez moi, c'est enregistrer (submitchanges), fermer l'API et la relancer. Même en enregistrant / vidant le contenu modifié / remettre le dit contenu ça ne passe pas.

  6. #6
    Membre très actif
    Avatar de UNi[FR]
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 340
    Par défaut
    ben tu fais tout à la mano !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ... [ma requête LINQ]...
    Items.clear();
    for (int i = 0; i< _result.count; i++)
         Items.add(_result[i]);

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 196
    Par défaut
    Ca a autant d'effet qu'un refresh : tout l'arbre est réduit, mais rien n'est ajouté quand je le réaffiche. Juste historie de, j'ai ajouté un SubmitChange entre le Clear() et le Add, rien n'y fait.

Discussions similaires

  1. OnPaint: rafraichir l'affichage
    Par Biosox dans le forum wxWidgets
    Réponses: 2
    Dernier message: 19/12/2006, 14h43
  2. rafraichir l'affichage d'un sous formulaire
    Par tibiurs dans le forum Access
    Réponses: 4
    Dernier message: 31/08/2006, 16h20
  3. [evc4] Rafraichir l'affichage
    Par Caroooo dans le forum MFC
    Réponses: 15
    Dernier message: 23/06/2006, 13h58
  4. débutant : rafraichir l'affichage c++builder
    Par matika dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/03/2006, 12h20
  5. [JFrame] Rafraichir l'affichage d'1 JFrame
    Par tomburn dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 21/04/2005, 11h39

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