|
DataGrid сделать такой
|
|||
---|---|---|---|
#18+
Я мало имею опыта с WPF, хочу реализовать одну идею для себя Знаю есть такие компоненты devexpress - деньги не хочу платить, да и надо 1 раз Задача реализовать что-то типа DataGrid но нестандартный: Пример, проект имеет описание(описание можно скрыть или отобразить), проект содержит задачи(описание можно скрыть или отобразить) и т.д. 3 уровня - проект - описание ---- Задача ---- описание ------- подзадача ------- описание ------- подзадача ------- описание ------- подзадача ------- описание ---- Задача ---- описание ---- Задача ---- описание - проект - описание Я пошел путем динамического создания компонентов на форме, знаю путь неправильный, вот и хочу узнать ваше мнение, как правильно. Куда копать? Может есть примеры проектов? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 16:15 |
|
DataGrid сделать такой
|
|||
---|---|---|---|
#18+
Такая штука называется TreeGrid Есть готовые решения, они несложные, можно и самому написать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 16:42 |
|
DataGrid сделать такой
|
|||
---|---|---|---|
#18+
Shocker.Pro Такая штука называется TreeGrid Есть готовые решения, они несложные, можно и самому написать. Готовые решения за деньги? Самому написать с минимальными знаниями c# смогу? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 19:29 |
|
DataGrid сделать такой
|
|||
---|---|---|---|
#18+
Focha Готовые решения за деньги? Focha Самому написать с минимальными знаниями c# смогу? https://www.codeproject.com/Articles/1213466/WPF-TreeGrid-using-a-DataGrid кажется я вот этот юзал, но допиливал под себя ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 19:56 |
|
DataGrid сделать такой
|
|||
---|---|---|---|
#18+
Если не сильно заморачиваться, то данный результата можно достигнуть использую встроенную группировку в представлении. Задавайте конкретные вопросы и получите конкретные ответы. На вопрос, "как сделать, вот такой контрол?", могу дать только один ответ. Легко! Дерево\группировку как я уже писал, можно сделать с помощью группировки в дефолтном представлении коллекции или делать собственное представление и всё это применять к существующему DataGrid, результат будет в точности такой как вам нужно. Но группировка в стандартном представлении редкостное говнище, даже при не супер больших объёмах тормозит адово, а при огромные объёмах умирает намертво. Так же в режиме группировки не работает виртуализация. Если хорошенько покопаться в этом разделе, можно найти описание как сделать по 2ому варианту, он сложнее, но на много более гибкий. Позволяет не только использовать иерархические коллекции, но и добавлять новые элементы в коллекцию на заданном уровне, управлять выделением, сортировкой (для иерархических списков сортировка должна действовать в рамках ветки, а не в рамках всего набора), поиском, фильтрацией и всем остальное. не так давно одной контроле делал подобную вундервафлю, достаточно классический и тривиальный запрос, уж не знаю от куда у людей такая любовь к деревьям почему мне не кто не дает таких задач? :( занимаюсь какой то херней :( ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 21:20 |
|
DataGrid сделать такой
|
|||
---|---|---|---|
#18+
Shocker.Pro, Так мне нужно иметь возможность редактировать Roman Mejtes, Мне нравиться Ваш ответ, но мне он не помогает. У меня есть задача вести список проектов/задач и подзадач(в удобном мне формате с возможность редактировать форму). Хочу сделать инструмент который я могу изменить и развивать в любой момент C# WPF очень давно изучал, опыта нет и сейчас понимаю, что на нем я могу реализовать свою идею. У меня на сервере есть таблицы: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
Я создал проект C# 4.7 WPF Подключил entity framework Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
Для реализации мне нужен datagrid Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67.
Я понял как вложить грид в грид, но дальше я не понимаю К верхнему гриду я привязал данные, а как привязать данные к нижнему Код: c# 1. 2. 3.
Поправьте меня если делаю неправильно или вы рекомендуете использовать не datagrid, а что? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2021, 13:54 |
|
DataGrid сделать такой
|
|||
---|---|---|---|
#18+
Focha Так мне нужно иметь возможность редактировать ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2021, 13:58 |
|
DataGrid сделать такой
|
|||
---|---|---|---|
#18+
Focha , как ответил Roman Mejtes , группировка это один из способов решения. Но надо несколько по иному собирать информацию в общую коллекцию. У элемента коллекции должны быть свойства через которые можно идентифицировать его группы. Другой вариант, это как вы написали, создание иерархической коллекции и её Представление вложенными списочными элементами (в том числе DataGrid). Так как на приведённом вами изображении нет явных сквозных колонок, то вам нужно использовать именно такой подход. Он даст индивидуальные колонки для каждого уровня. К сожалению, вы используете, мягко говоря, не типичнsq для C# и тем более для WPF стиль программирования - понять ваш код трудно. Даже элементарные Правила Именования вы не соблюдаете. Типовым для WPF является получение данных через Привязки к Контексту Данных. По идее у вас должна быть некая коллекция типа ObservableCollection для данных по Проектам (назовём условно ObservableCollection<Project> Projects {get;}). В каждом Проекте (Project) должна быть коллекция Задач (Task - это часто используемый для Net тип. Поэтому назовём их Job): ObservableCollection<Job> Jobs {get;}. В каждой Задаче - коллекция подзадач: ObservableCollection<SubJob> SubJobs{get;}. Для нужного вам оформления DataGrid плохо подходит, так как у него жёстко выделенные сквозные колонки. Вам же , судя по рисунку, нужно наложение колонок. Поэтому использую ItemsControl (но можно и ListBox). В таком случае привязки коллекций будут выглядеть так: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
Пишу здесь, скорее это не псевдокод. Надеюсь поймёте саму идею. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2021, 11:57 |
|
DataGrid сделать такой
|
|||
---|---|---|---|
#18+
Eld Hasp, Спасибо. У меня опыта с C# ноль ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 14:48 |
|
DataGrid сделать такой
|
|||
---|---|---|---|
#18+
Focha Eld Hasp, Спасибо. У меня опыта с C# ноль Печально... Вы вроде показывали выше код на Шарпе. В WPF Решении в целом, собственно само WPF - это малая толика, единицы процентов от общего кода. Основная часть это Модель + Репозиторий: Бизнес-логика и Хранение Данных. Потом ViewModel, подготавливающая данные модели для WPF и передающая действия из GUI в Модель. И это всё пишется на Шарпе. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2021, 21:50 |
|
DataGrid сделать такой
|
|||
---|---|---|---|
#18+
Eld Hasp, В подобных случаях дататемплейты и стили рекомендуется не инлайнить, а выносить выше в область, где они будут созданы однократно, и ссылаться на них посредством StaticResource - при инлайновом объявлении темплейты и стили будут заново пересоздаваться при перезаполнении ItemsControl, что может быть затратно при достаточно сложной структуре темплейтов/стилей, плюс может привести к утечкам памяти (с другой стороны, рекомендуется размещать их максимально близко к месту использования, чтобы минимизировать путь поиска по логическому дереву - такая вот дилемма). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2021, 07:08 |
|
DataGrid сделать такой
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, не знал. Думал это равнозначный. На практике создавал в ресурсах, но с целью разгрузить XAML Окна. И подумал сейчас. ItemTemplate - это же шаблон. Он не создаёт непосредственно элементов. Это просто фабрика. По идее не должно быть разницы, ссылается фабрика на экземпляр в ресурсах или на анонимный экземпляр заданный в самом шаблоне. Спорить не буду - так "мысли в слух". ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2021, 13:56 |
|
DataGrid сделать такой
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, дошло... Фабрика будет создавать первый уровень. А для каждого следующего уровня будет создаваться своя фабрика со своими анонимными экземплярами. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2021, 13:58 |
|
DataGrid сделать такой
|
|||
---|---|---|---|
#18+
Для HeaderedItemsControl насколько помню, можно задать view. Вложенные ItemsControl по мне кривовато выглядят. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2021, 14:23 |
|
|
Start [/forum/topic.php?fid=21&fpage=1&tid=1440254]: |
0ms |
get settings: |
26ms |
get forum list: |
25ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
415ms |
get tp. blocked users: |
3ms |
others: | 331ms |
total: | 886ms |
0 / 0 |