|
ComboBox в DataGrid
|
|||
---|---|---|---|
#18+
Попробовал создать колонку в DataGrid с ComboBox... не тут-то было. Вроде всё просто...., но никак! Чё-то упускаю, а что не доходит. ComboBox список выводит, но не меняется привязанный элемент и не дополняется коллекция 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.
Код: 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.
И второй вопрос. Я правильно понял, что использовать колонку DataGridComboBoxColumn можно только со статическим списком? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 23:59 |
|
ComboBox в DataGrid
|
|||
---|---|---|---|
#18+
Eld HaspComboBox список выводит, но не меняется привязанный элемент и не дополняется коллекция DataGrid Потому что здесь вообще непонятно что творится. Вот это Eld Hasp Код: sql 1.
- что? Вы биндите SelectedItem комбобокса на свойство типа, соответствующего типу генерик-параметра ItemsSource самого DataGrid - т.е. на свойство типа ExampClass. Но у класса ExampClass нет свойства Path, это во-первых. Во-вторых, свойство типа генерик-параметра исходной коллекции (ItemsSource для DataGrid), которое вы собираетесь менять, должно быть того же типа, что и SelectedItem комбобокса (а здесь явно чувствуется попытка прикрутить SelectedItem c типом ExampClass к свойству с типом int). В противном случае для биндинга нужно задавать конвертер - в данном случае конвертер между ExampClass и int. Eld HaspИ второй вопрос. Я правильно понял, что использовать колонку DataGridComboBoxColumn можно только со статическим списком? Что подразумевается под "статическим списком"? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 06:35 |
|
ComboBox в DataGrid
|
|||
---|---|---|---|
#18+
Сон Веры Павловны- что? Вы биндите SelectedItem комбобокса на свойство типа, соответствующего типу генерик-параметра ItemsSource самого DataGrid - т.е. на свойство типа ExampClass. Но у класса ExampClass нет свойства Path, это во-первых. Делал без Path, но выходила ошибка с указанием поставить Path.... Ну, и поставил, но работать всё равно не стало. Сон Веры ПавловныВо-вторых, свойство типа генерик-параметра исходной коллекции (ItemsSource для DataGrid), которое вы собираетесь менять, должно быть того же типа, что и SelectedItem комбобокса (а здесь явно чувствуется попытка прикрутить SelectedItem c типом ExampClass к свойству с типом int). В противном случае для биндинга нужно задавать конвертер - в данном случае конвертер между ExampClass и int.Может я не правильно понимаю - поправьте. В биндинг передаётся элемент коллекции ItemsSource DataGrid. В данном случае тип этого элемента ExampClass. В режиме отображения TextBlock я привязал к свойству PropString этого класса. В режиме редактирования идея была в том, чтобы ComboBox заменял сам элемент элементом из своего списка. Не одно из свойств, а весь элемент. Свойство PropInt элемента отображается в соседней колонке. Эта колонка недоступна для редактирования. Я понимаю, что что-то неправильно здесь делаю. Но конвертер здесь для чего? По замыслу ComboBox.SelectedItem и элемент DataGrid.ItemsSource одного типа. Сон Веры ПавловныEld HaspИ второй вопрос. Я правильно понял, что использовать колонку DataGridComboBoxColumn можно только со статическим списком? Что подразумевается под "статическим списком"?Статический, то есть неизменяемый. В инете примеры которые видел все с привязкой ItemsSource к StaticResource или прямой инициализацией списка в XAML. Попробовал привязать к списочному свойству - ничего не показывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 11:25 |
|
ComboBox в DataGrid
|
|||
---|---|---|---|
#18+
Чуть более развёрнутый пример. Код: 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.
Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 11:29 |
|
ComboBox в DataGrid
|
|||
---|---|---|---|
#18+
Ох! Пропустил одну строчку - не исправил. Код: xml 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 11:32 |
|
ComboBox в DataGrid
|
|||
---|---|---|---|
#18+
Во втором примере, работает как задумывалось. А первый, вроде тоже самое - не работает. Как-то не так привязки указываю. На мой взгляд, оба примера одно и тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 11:37 |
|
ComboBox в DataGrid
|
|||
---|---|---|---|
#18+
Если из первого примера убрать Path, то при попытке редактирования строки выходит такая ошибка (на скриншоте) Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 11:49 |
|
ComboBox в DataGrid
|
|||
---|---|---|---|
#18+
Eld Hasp, Вот вполне работающий пример - разбирайтесь, там всё вполне очевидно. Код Код: 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. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123.
Разметка Код: 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.
В верхнем датагриде SelectedItem комбобокса связан со свойством такого же типа из элемента ItemsSource датагрида, ItemsSource комбобокса статический. В нижнем датагриде SelectedItem комбобокса связан со свойством другого типа из элемента ItemsSource датагрида, и поэтому используется конвертер, ItemsSource комбобокса динамический (привязан к свойству элемента из ItemsSource датагрида). Визуально это выражается в том, что если выбрать нечетный день недели, список в комбобоксе будет отсортирован по возрастанию номера дня недели, если выбрать нечетный - по убыванию. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 14:46 |
|
|
start [/forum/topic.php?fid=21&tid=1440362]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 238ms |
total: | 376ms |
0 / 0 |