powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Группировка в DataGrid
5 сообщений из 5, страница 1 из 1
Группировка в DataGrid
    #39326692
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть класс, который описывает файл, т.е он содержит набор свойств + свойство Path - путь к файлу без имени файла.
Есть коллекция этих классов. Как сделать группировку по полю Path, с разбиением пути на каталоги? Например, есть путь "Folder1\Folder2\Folder3". Хочу в итоге иметь вид:
+Folder1
+Folder2
+Folder3
Файл ... какие-то столбцы

Где "+" - это Expander. По сути - получается дерево, смесь DataGrid и TreeView. Но хочу понять реально как-нибудь сделать многоуровневою группировку по одному полю.
...
Рейтинг: 0 / 0
Группировка в DataGrid
    #39326730
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Супер_Пав,

если число уровней группировки фиксированное - всё просто, это обычный DataGrid, и тут ничего не надо изобретать: https://msdn.microsoft.com/en-us/library/ff407126(v=vs.100).aspx

если число уровней заранее неизвестно, то здесь есть 2 варианта:
1) вместо DataGrid использовать ListView: http://www.codeproject.com/Articles/30721/WPF-TreeListView-Control или https://blogs.msdn.microsoft.com/atc_avalon_team/2006/03/01/treelistview-show-hierarchy-data-with-details-in-columns/ . Здесь есть несколько нюансов в реализации - анпример, будет сюрприз, если приспичит сделать колонку со star size.
2) Собственно DataGrid: https://blogs.msdn.microsoft.com/mrochon/2009/10/16/displaying-hierarchical-data-in-the-datagrid/ , куски обсуждения здесь: http://stackoverflow.com/questions/3457107/wpf-handle-editable-hierarchical-data-treeviewdatagrid-hybrid . Основная идея - отступ контента первой колонки в зависмости от уровня иерархии, плюс динамическое скрытие/показ строк - либо переформированием ItemsSource, либо, как сделал я в свое время, стиль для DataGridRow, в котором видимость самого DataGridRow задается в зависимости от свойства IsVisible элемента ItemsSource, а для элемента это свойство выствавляется в рекурсивной процедуре при сворачивании/разворачивании уровней. Получилось примерно вот такое:
...
Рейтинг: 0 / 0
Группировка в DataGrid
    #39326808
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я делаю так:
делаю обёртку для коллекции, которая подписывается на INotifyCollectionChanged оригинальной коллекции и сама реали3ует этот интерфейс (если это во3можно),
3атем каждый элемент так же оборачивается в свою обёртку, которая содержит свойства IsExрanded, а 3а одно и IsSelected и все события для обработки иx и3менений.
когда меняется IsExрanded я с помощью INotifyCollectionChanged добавляю или удаляю элементы, а в случаи Reset просто перечисляю коллекцию по новой.
ICollectionView исполь3ую стандартный (ListCollectionView).

Далее во вью, если строка группировки не содержит ячеек, то в DataGridRow CellРresenter 3аменяется на ContentРresenter с 3аданным шаблонов

Могу скинуть "примерный" пример, когда буду на работе. Всё равно уже уволился, так, что не сильно 3анят )
...
Рейтинг: 0 / 0
Группировка в DataGrid
    #39327398
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое за ответы. Я видел эти примеры ранее, да и как я писал в 1м посте, смешать дерево и датагрид не проблема, но я хотел бы понять, реально ли делать группировку по 1 полю, но учесть, что оно составное поле. Может какой-то конвертер. Могу переписать классы, сделать древовидную структуру, но пока не пойму как сделать вложенную группировку. Сейчас у меня обычная коллекция элементов, группировку делаю через GroupDescriptions.Add(ИмяПоля);
...
Рейтинг: 0 / 0
Группировка в DataGrid
    #39327421
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
глянул пример с TreeGridApp. Что-то близко похожее, попробую доработать его
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Группировка в DataGrid
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]