|
DataGrid Binding - неопределённое число полей.
|
|||
---|---|---|---|
#18+
Всем привет, давненько не заглядывал. Подскажите такую вещь. Есть 2-мерная таблица, у которой не известно заранее число колонок. Как корректно забиндить это всё в DataGrid? Т.е. базовые вещи я понял, как делаются. Примерчики почитал, но там везде делается ObservableCollection<КакойНибудьКласс>, у которого число свойств фиксированное. В моём же случае даже не получается сделать класс, к полям которого можно было бы прибиндиться (ну, понятно, можно сконструировать его через Reflection, но это громоздко). Хотя можно сделать класс с фиксированным набором полей, а остальные получать через GetAdditionalValue(int index). Так же нашёл примерчик с GetBindable2DArray, но тогда сортировка не работает. Как можно это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2016, 14:20 |
|
DataGrid Binding - неопределённое число полей.
|
|||
---|---|---|---|
#18+
Например, забиндить к DataTable. Или реализовать самому что-то подобное: 18781617 . ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2016, 14:26 |
|
DataGrid Binding - неопределённое число полей.
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, спасибо, интересно, сейчас посмотрю! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2016, 14:44 |
|
DataGrid Binding - неопределённое число полей.
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, у меня почему-то не вызывается GetValue для полей из массива. Не понятно, колонки в гриде создаются, но отображаются пустыми. Биндинг ругается: System.Windows.Data Error: 40 : BindingExpression path error: 'V2' property not found on 'object' ''Rez' (HashCode=1155772)'. BindingExpression:Path=V2; DataItem='Rez' (HashCode=1155772); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String') ну а вот мои классики: Код: 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. 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. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2016, 15:48 |
|
DataGrid Binding - неопределённое число полей.
|
|||
---|---|---|---|
#18+
брейкпоинт ставил, в GetValue даже не заходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2016, 16:10 |
|
DataGrid Binding - неопределённое число полей.
|
|||
---|---|---|---|
#18+
есть несколько вариантов: вариант а: Создаем AttachedProperty с типом IList<IColumn>, в Changed методе просто генерируем нужные DataGridColumns нужных нам типов вариант б: Создаем наследованный от DataGrid класс, добавляем DependencyProperty и делаем то же самое. вариант в: Создаем свой контрол, который будет содержать в своём шаблоне DataGrid, все нужные свойства создаем с помощью AddOwner и пробрасываем через TemplateBinding. Потом смотрим вариант б. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2016, 17:10 |
|
DataGrid Binding - неопределённое число полей.
|
|||
---|---|---|---|
#18+
P.S. вообще забыл сказать, что Binding поддерживает индексы. то есть, поддерживает вот такую запись {Binding Values[0]} То есть, можно создать список строк которые будут содержать в себе словарь значений, каждая сгенерированная колонка будет связывать ячейку с элементом словаря строки, по её индексу. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2016, 17:12 |
|
DataGrid Binding - неопределённое число полей.
|
|||
---|---|---|---|
#18+
Тема, конечно, интересная. Но я подумал, и сделал всё на DataTable. Эти заморочки с полями, индексами - очень непонятно потом будет для новичков. А тут всё получилось очень прозрачно и легко поддаётся чтению. Спасибо всем за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2016, 18:26 |
|
|
start [/forum/topic.php?fid=21&fpage=11&tid=1440658]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
70ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
others: | 238ms |
total: | 383ms |
0 / 0 |