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 :

Treeview hierarchique complexe


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut Treeview hierarchique complexe
    Bonjour à tous,

    Je m'essaie à produire une Treeview à plusieurs niveaux qui aura cette forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    - Niveau 1
        - Item 1
            - Parents
                - Item 2
                - Item 3
            - Enfants
                - Item 4
        + Item 2
    + Niveau 2
    + Niveau 3
    Donc j'ai une Treeview qui prend en source une collection "Niveaux", qui est de la sorte

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public class Niveau
    {
         public int Id {get; set;}
         public string Name {get; set;}
         public List<Item> Items {get; set;}
    }
     
    public class Item
    {
         public int Id {get; set;}
         public string Name {get; set;}
         public List<Item> Parents {get; set;}
         public List<Item> Enfants {get; set;}
    }

    Niveaux[0].Items[0].Parents (ou Enfants).

    Donc j'ai écris un ItemTemplate avec plusieurs niveau de HierarchicalDataTemplate, dont voici le code :

    Code xml : 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
     
                <HierarchicalDataTemplate x:Key="ParentTemplate">
                    <TreeViewItem >
                        <TextBlock Text="{Binding Path=Name}" />
                    </TreeViewItem>
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate x:Key="ItemsTemplate" ItemTemplate="{StaticResource ParentTemplate}" ItemsSource="{Binding Path=Parents}" >    
                    <TextBlock Text="{Binding Path=Name}" />
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate x:Key="NameTemplate" ItemsSource="{Binding Path=Items}" ItemTemplate="{StaticResource ItemsTemplate}">
                    <TextBlock Text="{Binding Path=Name}" />
                </HierarchicalDataTemplate>
    </DockPanel.Resources>
     
            <TreeView ItemsSource="{Binding Niveaux}" ItemTemplate="{StaticResource NameTemplate}" />
        </DockPanel>

    Ce que je veux c'est insérer, un bloc Parent et un bloc Enfant qui contiendront la collection Parents et la collection Enfants

    Je ne sais pas si j'ai pu être claire

    D'avance merci
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Je me demande si une structure comme celle-ci ne serait pas plus adaptée :
    Code c# : 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
    public class Niveau
    {
         public int Id {get; set;}
         public string Name {get; set;}
         public List<Item> Items {get; set;}
    }
     
    public class Item
    {
         public int Id {get; set;}
         public string Name {get; set;}
         public List<Item> Fils {get; set;}
    }
    public class Parent : Item
    {
    }
    public class Enfant : Item
    {
    }

    "Item 1" dans l'exemple donné aura sa propriété Fils composé d'un Parent et d'un Enfant.
    Ensuite, il faut adapter les datatemplate en fonction de tes items (Parent ou Enfant).

    Après est-ce que j'ai bien compris

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Bonjour Binoo, d'abord un grand merci pour m'avoir répondu.
    Au fait le problème est que je veux conserver l'affichage séparer des Parents et des Fils (d'ailleurs y aura même des différences dans le styles). Donc ma difficulté est d'avoir deux noeux (presque static) dans une structure construite dynamiquement, avec deux sources (collection Parent/Fils) distinctes.

    J'espère avoir apporter plus de clarté, car j'avoue avoir eu des difficultés a exposé simplement mon problème

    Encore merci à toi
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Bon j'ai fais quelque chose qui donne le rendu que je veux mais pas encore satisfait pleinement de ma solution (genre on perd la sélection dans le stackpanel de ItemsTemplate), là voici :

    Code xml : 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
     
        <DockPanel>    
            <DockPanel.Resources> 
                <HierarchicalDataTemplate x:Key="ParentTemplate">
                        <TextBlock Text="{Binding Path=Name}" />
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate x:Key="ItemsTemplate">    
                    <StackPanel>
                        <TextBlock Text="{Binding Path=Name}" />
                        <TreeViewItem ItemsSource="{Binding Path=Parents}" Header="Parent" ItemTemplate="{StaticResource ParentTemplate}" />
                        <TreeViewItem ItemsSource="{Binding Path=Enfants}" Header="Child" ItemTemplate="{StaticResource ParentTemplate}" />
                    </StackPanel>
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate x:Key="NameTemplate" ItemsSource="{Binding Path=Items}" ItemTemplate="{StaticResource ItemsTemplate}">
                    <TextBlock Text="{Binding Path=Name}" />
                </HierarchicalDataTemplate>
            </DockPanel.Resources>
     
            <TreeView ItemsSource="{Binding Niveaux}" ItemTemplate="{StaticResource NameTemplate}" />
        </DockPanel>

    Si vous avez des idées d'améliorations
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

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

Discussions similaires

  1. [Débutant] [MVVM] Treeview complexe
    Par Atchioum dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 08/09/2014, 16h24
  2. [WD18] tables hierarchiques (treeview) et fliste fichiers
    Par christophe9117 dans le forum WinDev
    Réponses: 1
    Dernier message: 17/04/2014, 18h22
  3. [WD-2007] liste hierarchique complexe
    Par faudouy dans le forum Word
    Réponses: 3
    Dernier message: 22/05/2012, 19h36
  4. Réponses: 0
    Dernier message: 07/05/2010, 12h54
  5. TreeView et menu contextuel...
    Par agh dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/04/2009, 13h23

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