|
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
|
||||||
.NET 4.x TreeView HierarchicalDataTemplate из простого списка28.09.2015, 15:21. Показов 3514. Ответов 22
Метки нет (Все метки)
Всем привет. Что-то не могу найти решения на простой вопрос (на более сложные варианты есть примеры)
Есть у меня список List<DwgBaseItem> dwgBaseItems. Он простой - без вложенных коллекций. На основе класса:
Подскажите как это сделать или какую-нибудь ссылку с примером
0
|
||||||
| 28.09.2015, 15:21 | |
|
Ответы с готовыми решениями:
22
Command в HierarchicalDataTemplate у TreeView Построение TreeView на основе БД с помощью HierarchicalDataTemplate Изменение содержимого простого списка при апдейте выпадающего списка |
|
Жуткая тВарЬ
|
|
| 28.09.2015, 16:31 | |
|
Modis, нужен просто адаптер который будет правильно восстанавливать ваши данные в визуально представление... Если точнее, то что Вы показали это объект данных (Модель) а Вам нужно создать представление этих данных (ВьюМодель) следовательно у вас должен быть сервис который отвечает за загрузку данных и соответственно у него должна быть информация как восстановить данные в Вашу объектную модель...Далее имея построенную объектную модель Вы сможете без труда привязать данные к тривью...
П.С. ВьюМодель все равно будет содержать иерархические данные, т.е. DwgBaseItemViewModel будет содержать свойство коллекцию подразделов или сам будет являться коллекцией, но это уже как пожелаете... Добавлено через 5 минут Кажись не совсем, то написал =) не увидел,что у вашего объекта нет вложенности других объектов (как у папок) - тобишь Вам просто надо сделать нормально шаблон итема.
0
|
|
|
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
|
||
| 28.09.2015, 16:37 [ТС] | ||
|
Сложный вариант (с вложенностью) по примеру из интернета я реализовал уже. А вот на простом застрял(
0
|
||
|
Жуткая тВарЬ
|
|
| 28.09.2015, 16:45 | |
|
Modis, У Вас к коде простой класс без коллекций, а на картинке, явно, показана коллекция итемов имеющая более одного подъэдемента, и тут возникает полное недопонимание, что Вы хотите получить в итоге...какое свойство где должно отображаться.
0
|
|
|
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
|
||
| 28.09.2015, 16:55 [ТС] | ||
|
Блин, я плохо умею объяснять ![]() Попробую по другому: 1. Создаю ListBox в котором отображаю только группы (через LINQ это можно) 2. При выборе группы в этом ListBox, я заполняю следующий ListBox, только уже значениями, у которых такое-же значение Group. Отображаю только Section 3. Тоже самое, что и в п.2, только теперь в 3 ListBox я добавляю те, у которых совпало SubSection 4. Ну и последний шаг - в 4 ListBox отображаю все значения (отображаю Name) у которых совпало SubSection А в моем вопросе я хочу избежать первые 3 пункта и все отобразить в TreeView
0
|
||
|
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
|
||||||
| 28.09.2015, 17:02 [ТС] | ||||||
|
Вот так думаю более понятно будет:
Вот xml-файл который десериализуется в коллекцию (два значения):
P.S. Я правда добавил еще параметр Group, но суть вопроса не меняется
0
|
||||||
|
Жуткая тВарЬ
|
|
| 28.09.2015, 17:08 | |
|
Modis, Значит надо создать класс представления (класс на подобии обычной папки) у которого будет два свойства - это имя и коллекция итемов и адаптер который будет создавать дерево из этих итемов и папок - решение не совсем тривиальное но именно так я и делал, даже создал универсальный объект в который можно поместить, что угодно и сохранить в xml в виде двух списков, в одном папки в другом файлы...
0
|
|
|
Жуткая тВарЬ
|
|||||||||||
| 28.09.2015, 17:17 | |||||||||||
|
Так скину свой маленький проект - он очень сырой и я его не доделал, но кое что в нем работает +)))
Glebov.Folder.zip Как пользоваться: Заполнение, загрузка, сохранение:
Шаблон:
0
|
|||||||||||
|
Жуткая тВарЬ
|
|
| 28.09.2015, 17:32 | |
|
Ах да у итемов нужно реализовать интерфейс IHaveParentFolder и сего свойства сделать обычными автоматическими, тогда будет автоматом происходить восстановление их из xml по папочкам..
Что бы видеть все что запихано в папку можно использовать ItemsSource="{Binding .}"
0
|
|
|
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
|
||||||
| 29.09.2015, 09:30 [ТС] | ||||||
|
amarf, пример конечно хороший, но я ничего не понял)) Сложновато для меня
Сегодня проснулся и понял - нужно один момент делать по-другому! Нужно, чтобы источником для TreeView были не параметры класса, а один параметр со строкой. А строка, разделяемая, например слешем (/), и была основой для построения. Ну типа есть пару строк: аа/бб/вв/гг аа/бб/вв/гг аа/бб/вв/дд после обработки в TreeView должно быть так:
0
|
||||||
|
880 / 559 / 291
Регистрация: 21.11.2012
Сообщений: 1,553
|
||||||
| 29.09.2015, 10:23 | ||||||
|
по-моему самый простой вариант был бы расширить ваш класс на 1 параметр, скажем
к примеру: MainGroup1 (parent: root) Section1 (parent: MainGroup1) Section2(parent: MainGroup2) Subsection1(parent: Section2) и т.п. сами узлы TreeViewItem можно назвать для удобства также, чтобы было проще добавлять узлы в дерево. ну как-то так..
0
|
||||||
|
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
|
||
| 29.09.2015, 12:12 [ТС] | ||
|
Да и вообще - странно, что чтобы отобразить обычный список в TreeView нужно столько усилий!
0
|
||
|
Жуткая тВарЬ
|
|
| 29.09.2015, 12:20 | |
|
Modis, Если на один раз то зачем вообще програмировать.. Если вы считаете, что обучение нужно только для получения знания о чем-то конкретном то вы очень много не понимаете... Если вы хотите не париться то организует у себя в коде нормальный мастер детэйл сценарий и работайте с ним...
В любом из случаев вам придётся потратить усилия на изучение.... Для меня вот это - пару пустяков, но для вас это целый подвиг и все лишь потому что я когда-то потратил свое время, без этого ни как...
0
|
|
|
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
|
|
| 29.09.2015, 12:30 [ТС] | |
|
amarf, может тогда подскажите и что почитать? В интернете слишком много информации. И найти среди нее ту, что является "основой" очень сложно.
Про MSDN молчу - у них вообще все непонятным языком написано. Как-будто для программистов с 10-ним стажем Добавлено через 5 минут И кстати - как это сделать в коде - я более менее представляю. Т.е. "вручную" строить дерево, обрабатывая событие Expanded. Я просто полагал, что через Binding это должно быть проще и элегантнее
0
|
|
|
Жуткая тВарЬ
|
|||
| 29.09.2015, 12:51 | |||
|
Можете конечно почитать Макдональда про Wpf там есть раздел посвященный TreeView, но боюсь без знания языка долго будете разбираться... В Wpf можно очень просто строить деревья, но для этого нужна хорошая модельная основа, а это опять же знание языка, паттернов проектирования и т.п. Ща что нить накидаю под Вашу задачу, если на работе дадут...
0
|
|||
|
Жуткая тВарЬ
|
|
| 29.09.2015, 16:17 | |
|
0
|
|
|
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
|
|||||||||||
| 30.09.2015, 10:45 [ТС] | |||||||||||
|
amarf, благодаря вашему примеру и ссылке, что я давал выше, получил то, что мне нужно - получение дерева из строк:
XAML:
0
|
|||||||||||
| 30.09.2015, 10:45 | |
|
Помогаю со студенческими работами здесь
20
Сформировать из простого списка ассоциативный Удалить атом х из простого списка Сортировка списка методом простого обмена
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|