6
votes

TreeView Multibinting dans WPF

Je veux lier une arboresview à une classe comme celle-ci:

|
|-File
|-File
|-Folder
  |-File
  |-File
  |-Folder
    |-File


1 commentaires

C'est exactement le même problème que j'ai rencontré lorsque je voulais remplir un arboresview avec chaque attribut de chaque élément d'un XDocument, je pouvais iTerrer sur les attributs d'un élément ou tous les éléments, mais itérant tous les éléments et tous les attributs de chaque L'élément m'a jeté pour une boucle .. Ne vous souvenez pas de ce que j'ai fait, mais cela gaspilla beaucoup de mon temps.


3 Réponses :


2
votes

Quelle est exactement votre question? Comment les combiner? compositecollection .

Edit: Comme mentionné dans les commentaires, mon L'application Intipic fait quelque chose de très similaire à ce que vous demandez . Voici une capture d'écran:

text alt


7 commentaires

Intuipic ( intuipic.codeplex.com ) est un projet que j'ai écrit un moment de retour qui fait cela. Vous voudrez peut-être vérifier.


@Kenboogaart, vraiment? "Intuipic est une visionneuse image facile à utiliser. Il vise à être intuitif d'utiliser, et fonctionnel en même temps." Cela ne sonne pas comme ça fait quelque chose comme la question.


@John: Si vous êtes soucieux de rechercher, vous verrez qu'il affiche une vue de dossier et d'arborescence de fichiers exactement comme l'OP demandée.


Je me souciais de regarder, je n'allais tout simplement pas passer le temps d'exécuter un installateur de ClickOnce ou de parcourir un arborescence source de CodePlex pour voir ce qui peut avoir été utile ou non. Il n'y a rien sur le site Codépleplex dans des captures d'écran ou tout ce que je pouvais trouver qui montrait une vue d'arbre comme l'affiche demandait. Votre note originale aurait été plus utile si vous l'avez dit "Vous voudrez peut-être consulter le fichier x \ y \ z dans ce projet à voir. Comment je l'ai fait"


@John: Vous ne pouvez pas être motivé pour regarder, mais j'espère que l'OP est.


La capture d'écran ne montre pas de fichiers et de dossiers au même niveau de l'arborescence.


Il n'y a pas besoin de nit-choisir. J'avais oublié exactement de quoi cela a fait parce que cela fait 3 ans que je l'ai écrit. Ce qu'il fait, c'est montrer une collection hétérogène d'articles liés hiérarchiquement à un arboresview . J'ai la foi que l'OP peut extrapoler cela pour englober des fichiers.



0
votes

vous devez utiliser Vous aurez besoin de 3 choses:

  1. Un hiérarchicaldaTemplate, comme vous l'avez, faire des parents + enfants et des gabarits. Vous pourrez peut-être utiliser une compositecollection ici pour fusionner les dossiers + les fichiers, mais je ne suis pas sûr de cela ... Vous devrez peut-être ajouter une autre propriété à votre classe de dossiers qui renvoie l'union des fichiers et des dossiers et l'appelez-le " Enfants "ou quoi que ce soit ...
  2. Un dataTemplate à des fichiers de modèle dans l'arborescence
  3. Un templateélecteur pour indiquer à l'arbre de basculer entre les modèles en fonction de l'élément de l'arborescence. Au lieu de définir un élémentTemplate sur l'arborescence, définissez l'élément duemplatSelector à ceci.

0 commentaires

1
votes

Ceci est assez facile, compte tenu de votre constellation.

Premier: ajustez vos cours. Vous n'avez pas besoin de deux listes distinctes pour les fichiers et les dossiers de la classe de dossiers. Il suffit d'utiliser un iList code> à l'intérieur de la classe BASE_FileFolder (bon oop) et appelez-les enfants! P>

alors vous n'avez besoin que de deux autres étapes: p>

  1. Deux hiérarchiquesDaTatempates p>

    <TreeView Name="TreeViewFileTree" ItemsSource="{rootFolder.Children}" />
    
  2. et un arborescence comme celui-ci p>

    <HierarchicalDataTemplate DataType="{x:Type FolderNode}"  ItemsSource="{Binding Path=Children}">
        <Grid>
            <TextBlock Text="{Binding FolderName}" />
        </Grid>
    </HierarchicalDataTemplate>
    
    <HierarchicalDataTemplate DataType="{x:Type FileNode}"  ItemsSource="{Binding Path=Children}">
        <Grid>
            <TextBlock Text="{Binding FileName}" />
        </Grid>
    </HierarchicalDataTemplate>
    


0 commentaires