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, déploiement et ScrollBar


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de thelpi
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 217
    Par défaut TreeView, déploiement et ScrollBar
    Bonjour à tous,

    J'ai réalisé un TreeView à 3 niveaux (+ racine) en WPF, 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
    18
     
    <DockPanel>
                <DockPanel.Resources>
                    <local:ListCat x:Key="MyList"/>
                    <HierarchicalDataTemplate DataType="{x:Type local:Cat}" ItemsSource="{Binding Path=LstSsCat}">
                        <TextBlock Text="{Binding Path=Name}"/>
                    </HierarchicalDataTemplate>
                    <HierarchicalDataTemplate DataType="{x:Type local:SsCat}" ItemsSource="{Binding Path=LstProcess}">
                        <CheckBox IsChecked="{Binding Path=IsCheck}" Content="{Binding Path=Name}" />
                    </HierarchicalDataTemplate>
                    <DataTemplate DataType="{x:Type local:Prc}">
                        <CheckBox Content="{Binding Path=Name}" IsChecked="{Binding Path=IsCheck}" />
                    </DataTemplate>
                </DockPanel.Resources>
                <TreeView Name="trvTasks">
                    <TreeViewItem IsExpanded="True" ItemsSource="{Binding Source={StaticResource MyList}}" />
                </TreeView>
            </DockPanel>
    Il s'affiche bien, cependant il y a 2 choses qui me posent problème: le ne déploie pas les niveaux enfants, pourtant j'aimerais que l'intégralité de mon treeview soit déployé dés l'affichage de la fenêtre.

    De plus, impossible d'afficher une ScrollBar sur le DockPanel (le treeview est largement plus grand que le dock). j'ai tout essayé avec ScroolViewer mais sans résultat...

    Merci du coup de main.

  2. #2
    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 : 43
    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
    Citation Envoyé par thelpi Voir le message
    ne déploie pas les niveaux enfants, pourtant j'aimerais que l'intégralité de mon treeview soit déployé dés l'affichage de la fenêtre.
    A ma connaissance il n'est pas possible de le faire en XAML. Il faut que tu parcoures tout le TreeView et que tu déplies les noeuds un par un, dans le code-behind.


    Citation Envoyé par thelpi Voir le message
    De plus, impossible d'afficher une ScrollBar sur le DockPanel (le treeview est largement plus grand que le dock). j'ai tout essayé avec ScroolViewer mais sans résultat...
    Tu as essayé comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            <ScrollViewer>
                <TreeView Name="trvTasks">
                    <TreeViewItem IsExpanded="True" ItemsSource="{Binding Source={StaticResource MyList}}" />
                </TreeView>
            </ScrollViewer>
    En principe ça doit suffire...

  3. #3
    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
    Pour déployer l'intégralité des noeuds, tu peux le faire en XAML avec un style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        <Window.Resources>
            <Style TargetType="TreeViewItem">
                <Setter Property="IsExpanded" Value="True"/>
            </Style>
        </Window.Resources>
    Si tu veux plus d'info sur le sujet, regarde sur le blog de Bea où il y a une série de trois articles "How can I expand items in a TreeView".

  4. #4
    Membre confirmé Avatar de thelpi
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 217
    Par défaut
    Merci pour vos réponses

    Concernant la ScrollBar, j'avais réussi à en obtenir une grisé, non clickable.
    Avec le code de tomlev, j'obtiens le même résultat, bizarre...

    Le style pour déployer le Treeview marche nickel, mais en réalité je me rend compte qu'il me faudrait les 2 premiers niveaux déployés, mais pas le dernier. A partir de mon code XAML, je ne pense pas que ce soit possible..

  5. #5
    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
    Citation Envoyé par thelpi
    Le style pour déployer le Treeview marche nickel, mais en réalité je me rend compte qu'il me faudrait les 2 premiers niveaux déployés, mais pas le dernier. A partir de mon code XAML, je ne pense pas que ce soit possible..
    Uniquement par le xaml, je ne pense pas en effet. Par contre le lien donné par Jérem22 devrait t'aider à réaliser cet effet (part 2 ou 3). Mais ça oblige à passer par du code c#

  6. #6
    Membre confirmé Avatar de thelpi
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 217
    Par défaut
    j'ai lu... mais malheureusement je n'ai pas tout compris ^^

    Pour le déploiement, j'ai identifié mon problème plus précisément:

    en parcourant mon treeview, je cherche à mettre IsExpanded=true sur les treeviewItem de premier niveau, puis parcourir les items enfants de chaque treeviewItem et refaire la même chose, ceci jusqu'a l'avant dernier niveau.

    En réalité, dés le deuxième niveau, je ne parvient pas à obtenir les enfant du treeviewItem (enfin j'y parvient mais ce ne sont pas d'autres treeviewItem, ce sont des "Cat" (cf. mon premier post) ).
    je ne sais pas ci c'est clair tout ça...

    Pour la scrollbar, je suis toujours au point mort, ma fenêtre n'arrête pas de grandir à chaque click pour déployer le treeview, jusqu'a dépasser la taille de mon écran, et si je fixe la taille du conteneur, le treeview disparait en bas de celui-ci.

    Merci pour votre aide en tout cas.

Discussions similaires

  1. [PYGTK]Scrollbar et TreeView
    Par bambou74 dans le forum GTK+ avec Python
    Réponses: 2
    Dernier message: 29/05/2011, 01h51
  2. Réponses: 1
    Dernier message: 29/09/2009, 10h27
  3. Scrollbar et Treeview
    Par koyot3 dans le forum Services Web
    Réponses: 1
    Dernier message: 27/10/2008, 16h16
  4. Scrollbar d'un treeview
    Par apqmwnqmap dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 28/02/2007, 10h10
  5. Comment récupérer la scrollBar d'un treeview?
    Par mrrenard dans le forum Windows Forms
    Réponses: 1
    Dernier message: 24/01/2007, 13h40

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