views:

310

answers:

2

I need something just like this:

alt text

(I need both the TreeView and the ListView aspects. That is, Hirearchy and Columns.)

But, I need it in WPF. is this something that is built in, or am I going to have to build it myself?

I assume it has to be somewhere in the framework, since VS2010 is build in WPF.

Edit: I have managed to get some of the functionality that I want using a TreeView and some grids with their Columns bound to a Parent grid's columns, but there are too many quirks in the functionality.

Edit 2: I still have as-of-yet not found a way to do this. Any ideas?

A: 

You are looking for the 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 XPath=@a}"/>
        </HierarchicalDataTemplate>
    </Page.Resources>
    <StackPanel>
        <TreeView
                ItemsSource="{Binding Source={StaticResource StaticXml}}"
              ItemTemplate="{StaticResource MenuTemplate}"/>
    </StackPanel>
</Page>
rasx
I need multiple columns. I have been trying for about 4 hours to coax multiple columns out of TreeView, but the result is a little less than impressive.
John Gietzen
Ah, the picture really does show that intent...
rasx
A: 

You may be able to fake this display using specially-aligned shared Grid objects in your templates for TreeView...

However I don't believe the one you see in Visual Studio is actually a WPF control implementation, it was there in Visual Studio 2008 as well and is likely either a custom native control or custom Windows Forms control.

Good news, though: if you must absolutely have this experience and want it soon... it's a total hack, but: use Windows Forms interop with your WPF app.

A Microsoft employee blogged a winforms TreeGridView implementation back in '06:

Jeff Wilcox
I think that that is WinForms.
John Gietzen
Correct. I have noted above, "it's a total hack, but use Windows Forms interop with your WPF app."
Jeff Wilcox