|
Не биндятся данные к combobox в WPF DataGrid
|
|||
---|---|---|---|
#18+
Использую WPF и Entity Framework, по MVVM шаблону. Есть View - ConductorsView, связана с ConductorsViewModel. На вьюшке Датагрид, где отображаются собственно кондукторы. Одну из колонок нужно сделать комбобоксом, что-бы можно было выбирать значения из списка. Вот пример ConductorsViewModel: Код: 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.
И собственно XAML код датагрида: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9.
В комбобоксе пусто, значения в колонке пустые. Пробовал всякие варианты, не получается. В чем может быть проблемма? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2015, 12:31 |
|
Не биндятся данные к combobox в WPF DataGrid
|
|||
---|---|---|---|
#18+
Дело в том, что вы пытаетесь привязать к свойству ItemsSource, свойства из объекта Conductor, так как контекст ячейки указывает именно на этот объект в случае с DataGridComboBoxColumn. Тут есть 2 пути: а) создать ObjectDataProvider в ресурсах, и связывать свойство ItemsSource именно с этим статическим объектов. Binding устроен так, что ObjectDataProvider для него является прозрачным. соотвественно связывание будет выглядеть как то так: ItemsSource="{Binding Source={StaticResource OdpBrigades}}" б) так как ячейка находится в DataGrid, а у DataGrid контекст класс WorkspaceViewModel, то можно с помощью RelativeSource найти DataGrid, и обратиться к его свойству DataContext примерно так: ItemsSource="{Binding DataContext.Brigades, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}" -) не уверен, что такой метод сработает, можно так же именовать контрол DataGrid и обратиться к нему через ElementName, но скорее всего работать не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2015, 12:07 |
|
Не биндятся данные к combobox в WPF DataGrid
|
|||
---|---|---|---|
#18+
Первый с созданием статического объекта в xaml не очень понравился. Второй вариант никак не хотел работать, DataGrid просто не находился и ничего не работало. Как потом выяснилось, - из-за того, что он не находится в одном дереве контролов. В итоге заработал такой вариант: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2015, 08:53 |
|
Не биндятся данные к combobox в WPF DataGrid
|
|||
---|---|---|---|
#18+
Eugene7Первый с созданием статического объекта в xaml не очень понравился. Второй вариант никак не хотел работать, DataGrid просто не находился и ничего не работало. Как потом выяснилось, - из-за того, что он не находится в одном дереве контролов. В итоге заработал такой вариант: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
кстати говоря :) в ячейке на самом деле не ComboBox, а "internal class TextBlockComboBox : ComboBox", отличается он только собственным стилем и IsTabStop по умолчанию false =) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2015, 09:00 |
|
|
start [/forum/topic.php?fid=20&msg=39024956&tid=1401295]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 137ms |
0 / 0 |