Подтвердить что ты не робот

WPF: Есть ли встроенный TreeGrid/TreeListView?

Мне нужно что-то вроде этого:

alt text

(Мне нужны аспекты TreeView и ListView. То есть Иерархия и Столбцы.)

Но мне это нужно в WPF. это что-то, что встроено, или мне придется строить это самому?

Я предполагаю, что это должно быть где-то в рамках, так как VS2010 встроен в WPF.

Изменение: мне удалось получить некоторые функциональные возможности, которые я хочу, используя TreeView и некоторые сетки с их столбцами, привязанными к столбцам родительской сетки, но в этой функциональности слишком много причуд.

Редактировать 2: Я до сих пор еще не нашел способ сделать это. Есть идеи?

4b9b3361

Ответ 1

Этот пост в MSDN использует собственный WPF для создания гибрида TreeView/Grid. Он основан на элементах TreeView и Grid. Он поддерживает древовидную структуру с несколькими столбцами, но не поддерживает сортировку или фильтрацию

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

EDIT: Недавно я включил этот код, и он работает очень хорошо, дает вам именно то, что вы хотите: http://www.codeproject.com/Articles/30721/WPF-TreeListView-Control

Ответ 2

Рассматривали ли вы Xceed.Wpf.DataGrid?

Вы можете увидеть демо- версию полной версии здесь.

Также имеется Community Edition в составе Extended WPF Toolkit ™ - лицензия Ms-PL.

Список возможностей в полной версии
Список функций в Community Edition
К сожалению, я не смог найти компиляцию в стиле таблицы.

PS

  1. Используя Snoop (утилита WPF Spy) и Spy++ в Visual Studio 2010 (Professional edition), я обнаружил, что TreeGrid, который вы видите в окнах инструментов Watch, Local и Autos, называется TREEGRID, который не является компонентом Wpf, (Но я не уверен что это).
    Интересно, что я обнаружил, что окно инструментов Breakpoints было построено с использованием двух компонентов рядом - SysTreeView32 и SysListView32.

  2. Я никак не связан с Xceed :-)

Редактировать:
Похоже, что иерархия может быть достигнута как в версии, но Master-Detail присутствует только в полной версии, а в версии сообщества вы можете получить только с помощью групп.
:-(

Ответ 3

Возможно, вы сможете подделать этот экран, используя специально выровненные общие объекты Grid в ваших шаблонах для TreeView...

Однако я не считаю, что тот, который вы видите в Visual Studio, на самом деле является реализацией управления WPF, он также присутствовал в Visual Studio 2008 и, вероятно, является либо настраиваемым собственным элементом управления, либо настраиваемым элементом управления Windows Forms.

Хорошая новость: если вы должны обязательно иметь этот опыт и скоро это захотите... это общий взлом, но: используйте Windows Forms для взаимодействия с вашим WPF-приложением.

Сотрудник Microsoft зарегистрировал реализацию winforms TreeGridView в '06:

Ответ 4

Вы ищете 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 [email protected]}"/>
        </HierarchicalDataTemplate>
    </Page.Resources>
    <StackPanel>
        <TreeView
                ItemsSource="{Binding Source={StaticResource StaticXml}}"
              ItemTemplate="{StaticResource MenuTemplate}"/>
    </StackPanel>
</Page>

Ответ 5

ObjectListView кажется мне очень хорошим...

Ответ 6

Вы можете несколько получить это поведение с DataGrid, выполнив этот учебник (прокрутите поддельную группировку с помощью раздела ViewModel).

Решение для учебников работает достаточно хорошо, но прокрутка может быть ломаной, и это поведение непредсказуемо, когда некоторые строки рушится.

Обновление. Я изменил способ скрытия данных. Вместо свертывания строк я удалял элементы в связанной ObservableCollection. Теперь прокрутка отлично работает!