2010-04-24 5 views
24

je besoin de quelque chose comme ceci: (. J'ai besoin à la fois le TreeView et les aspects ListView C'est, Hirearchy et colonnes.)WPF: Y a-t-il un TreeGrid/TreeListView intégré?

alt text http://files.otac0n.com/TreeListView.png

Mais, je dois en WPF. est-ce quelque chose qui est construit, ou vais-je devoir le construire moi-même? Je suppose que cela doit être quelque part dans le cadre, puisque VS2010 est construit dans WPF.

Modifier: J'ai réussi à obtenir certaines des fonctionnalités que je veux utiliser un TreeView et certaines grilles avec leurs colonnes liées aux colonnes d'une grille parent, mais il y a trop de bizarreries dans la fonctionnalité.

Éditer 2: Je n'ai toujours pas trouvé un moyen de le faire. Des idées?

Répondre

0

Vous recherchez le TreeViewhttp://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.treeview.aspx:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" > 
    <Page.Resources> 
     <XmlDataProvider x:Key="StaticXml" XPath="root/foo"> 
      <x:XData> 
       <root xmlns=""> 
        <foo a="_File"> 
         <foo a="New"> 
          <foo a="_Project..." /> 
          <foo a="_Web Site..."/> 
         </foo> 
         <foo a="C_lose"/> 
         <foo a="E_xit"/> 
        </foo> 
        <foo a="_Edit"> 
         <foo a="Cu_t"/> 
         <foo a="_Copy"/> 
         <foo a="_Paste"/> 
        </foo> 
       </root> 
      </x:XData> 
     </XmlDataProvider> 
     <HierarchicalDataTemplate x:Key="MenuTemplate" ItemsSource="{Binding XPath=foo}"> 
      <AccessText Text="{Binding [email protected]}"/> 
     </HierarchicalDataTemplate> 
    </Page.Resources> 
    <StackPanel> 
     <TreeView 
       ItemsSource="{Binding Source={StaticResource StaticXml}}" 
       ItemTemplate="{StaticResource MenuTemplate}"/> 
    </StackPanel> 
</Page> 
+1

je besoin de plusieurs colonnes. J'ai essayé pendant environ 4 heures pour amadouer plusieurs colonnes de TreeView, mais le résultat est un peu moins impressionnant. –

+0

Ah, l'image ne montre vraiment cette intention. – rasx

2

Vous pouvez être en mesure de simuler cet affichage en utilisant la grille partagée spécialement alignés objets dans vos modèles pour TreeView ...

Cependant, je n » Je crois que celui que vous voyez dans Visual Studio est en fait une implémentation de contrôle WPF, il était également présent dans Visual Studio 2008 et est probablement un contrôle natif personnalisé ou un contrôle Windows Forms personnalisé. Bonne nouvelle, cependant: si vous devez absolument avoir cette expérience et le vouloir bientôt ... c'est un hack total, mais: utilisez Windows Forms interop avec votre application WPF.

Un employé de Microsoft a blogué WinForms TreeGridView mise en œuvre de retour dans '06:

+0

Je pense que c'est WinForms –

+0

Correct. J'ai noté ci-dessus, "c'est un hack total, mais utiliser Windows Forms interop avec votre application WPF." –

0

ObjectListView semble assez bon pour moi ...

+7

ObjectListView est construit sur WinForms, pas WPF – Pakman

+0

ObjectListView peut être utilisé dans WPF mais quand je l'ai essayé il y avait beaucoup de problèmes de scintillement que je n'avais pas avec la même implémentation dans Winforms donc je ne peux pas conseiller de l'utiliser: –

0

Vous pouvez un peu obtenir ce comportement avec le DataGrid en suivant this tutorial (scroll e le Faisant un regroupement à l'aide de la section ViewModel).

La solution du didacticiel fonctionne assez bien, mais le défilement peut être décalé et son comportement est imprévisible lorsque certaines lignes sont réduites.

Mise à jour: J'ai modifié la façon dont les enfants sont masqués. Au lieu de réduire les lignes, j'ai supprimé les éléments dans ObservableCollection lié. Maintenant, le défilement fonctionne parfaitement!

9

Cette publication sur MSDN utilise le format WPF natif pour réaliser un hybride TreeView/Grid. Il est basé sur les contrôles TreeView et Grid.Il prend en charge un TreeView avec plusieurs colonnes, mais ne prend pas en charge le tri ou le filtrage

http://dlaa.me/blog/post/9898803

EDIT: J'ai récemment intégré ce code et cela fonctionne très bien, vous donne exactement ce que vous voulez: http://www.codeproject.com/Articles/30721/WPF-TreeListView-Control

5

Avez-vous considéré Xceed.Wpf.DataGrid?

Vous pouvez voir une démo de Version complètehere.

Il y a aussi une communautaire édition dans le cadre de Extended WPF Toolkit ™ - Ms-PL license

List of the features in Full version
List of the features in Community Edition
Malheureusement, je ne pouvais pas trouver une compilation de style table.

P.S.

  1. En utilisant Snoop (WPF utilitaire Spy) et Spy ++ sur Visual Studio 2010 (Professional Edition), j'ai trouvé que la TreeGrid vous voir à l'intérieur Regarder, locale, et Autos outil windows, est appelé TreeGrid qui est pas un composant WPF. (Mais je ne suis pas sûr de ce que c'est).
    Intéressant cependant, j'ai trouvé que le outil Breakpoints fenêtre a été construit en utilisant deux composants côte à côte - SysTreeView32 et SysListView32

  2. Je ne suis pas racontai Xceed dans tous les :-) façon

Edit:
Il semble que la hiérarchie peut être réalisée sur les deux versions, mais master-Detail est seulement présent dans le version complète, et sur la version communautaire vous pouvez obtenir uniquement en utilisant Groupes.
:-(

+0

sur Visual Studio 2017, la plupart des _ToolWindow_ sont 'Microsoft.VisualStudio.Platform.WindowManagement.GenericPaneClientHwndHost' hébergé dans 'Microsoft.VisualStudio.Platform.WindowManagement.WindowFrame + ContentHostingPanel' mais les contrôles internes (Tree + Grid) ne sont pas des contrôles WPF ** réels. Ce sont probablement des contrôles internes (& natifs?) Stockés quelque part près de Microsoft.VisualStudio.Platform.WindowManagement.dll – itsho

Questions connexes