WPF: ¿Hay un TreeGrid/TreeListView incorporado?
controls (6)
Necesito algo como esto:
texto alternativo http://files.otac0n.com/TreeListView.png
(Necesito los aspectos TreeView y ListView. Es decir, Hirearchy y Columns).
Pero, lo necesito en WPF. ¿Es esto algo que está incorporado, o voy a tener que hacerlo yo mismo?
Supongo que tiene que estar en algún lugar del marco, ya que VS2010 está integrado en WPF.
Edición: He logrado obtener algunas de las funciones que deseo al usar un TreeView y algunas cuadrículas con sus columnas vinculadas a las columnas de una cuadrícula principal, pero hay demasiadas peculiaridades en la funcionalidad.
Edición 2: Todavía no he encontrado una forma de hacerlo. ¿Algunas ideas?
¿Has considerado Xceed.Wpf.DataGrid ?
Puedes ver un demo de la versión completa here .
También hay una edición comunitaria como parte de Extended WPF Toolkit ™ - licencia Ms-PL
Lista de las características en versión completa
Lista de las características en Community Edition
Desafortunadamente, no pude encontrar una compilación de estilo de tabla.
PD
Al usar Snoop (utilidad WPF Spy) y Spy ++ en Visual Studio 2010 (edición profesional), descubrí que el TreeGrid que se ve dentro de las ventanas de herramientas Watch , Local y Autos se llama TREEGRID, que no es un componente Wpf. (Pero no estoy seguro de qué es).
Sin embargo, es interesante que encontré que la ventana de la herramienta de Puntos de Interrupción se construyó utilizando dos componentes, uno al lado del otro: SysTreeView32 y SysListView32No estoy relacionado con Xceed de ninguna manera :-)
Editar:
Parece que la Jerarquía se puede lograr en ambas versiones, pero Master-Detail solo está presente en la versión completa , y en la versión de la comunidad solo se puede obtener mediante el uso de grupos .
:-(
Es posible que pueda falsificar esta pantalla utilizando objetos de Grid compartidos especialmente alineados en sus plantillas para TreeView ...
Sin embargo, no creo que lo que se ve en Visual Studio sea en realidad una implementación de control de WPF, también estaba allí en Visual Studio 2008 y es probable que sea un control nativo personalizado o un control de formularios de Windows personalizado.
Sin embargo, es una buena noticia: si debes tener esta experiencia y quererla pronto ... es un hack total, pero usa Windows Inters Interop con tu aplicación WPF.
Un empleado de Microsoft blogueó una implementación de TreeGridView
winforms en 2006:
Está buscando el TreeView
http://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 XPath=@a}"/>
</HierarchicalDataTemplate>
</Page.Resources>
<StackPanel>
<TreeView
ItemsSource="{Binding Source={StaticResource StaticXml}}"
ItemTemplate="{StaticResource MenuTemplate}"/>
</StackPanel>
</Page>
Esta publicación en MSDN utiliza el WPF nativo para lograr un híbrido TreeView / Grid. Se basa en los controles TreeView y Grid. Admite una vista de árbol con varias columnas, pero no admite la clasificación ni el filtrado.
http://dlaa.me/blog/post/9898803
EDITAR: Recientemente he integrado este código y funciona muy bien, le ofrece exactamente lo que desea: http://www.codeproject.com/Articles/30721/WPF-TreeListView-Control
Puede obtener este comportamiento de alguna manera con el DataGrid siguiendo este tutorial (desplace la agrupación Fake con la ayuda de la sección ViewModel ).
La solución del tutorial funciona lo suficientemente bien, pero el desplazamiento puede demorarse y su comportamiento es impredecible cuando se contraen algunas filas.
Actualización : Cambié cómo se esconden los niños. En lugar de colapsar filas, eliminé elementos en el ObservableCollection enlazado. ¡Ahora el desplazamiento funciona perfectamente!
ObjectListView parece bastante bueno ...